`

条款20: 避免public接口出现数据成员

阅读更多
条款20: 避免public接口出现数据成员
其实我以前一直不明白,为什么数据成员放在PRIVATE里面,不让外面直接访问;为什么JAVABEAN要那么严格规定。发现自己对

实例了解太少了。
一个非常非常简单的例子
class speeddatacollection {
public:
  void addvalue(int speed);       // 添加新速度值

  double averagesofar() const;    // 返回平均速度
};


假设是一个监视器。需要监视每辆车的速度,然后算出平均速度,如果通过一个函数作为介质可以有两种方案:
1。申明一个变量放置平均速度值,通过averagesofar返回
2。不申明该变量,完全通过averagesofar调用来计算
以上这两种情况可以适合在不同情况下使用,比如第一种,需要频繁调用averagesofar;第二种,不常调用averagesofar;需

要修改的时候只要改改类里面的函数就好了

如果根据直接变量返回呢?你可能整个程序都是用该变量返回,如果遇到如上不同情况,修改时将是一个很大的麻烦。

不过话说回来,任何东西太过都不太好,就比如将所有数据成员申明成private通过函数返回等操作。
1
0
分享到:
评论

相关推荐

    Effective.C++.中文第二版.50条款doc文档.chm

    条款20: 避免public接口出现数据成员 条款21: 尽可能使用const 条款22: 尽量用“传引用”而不用“传值” 条款23: 必须返回一个对象时不要试图返回一个引用 条款24: 在函数重载和设定参数缺省值间慎重选择 条款25: ...

    Effective C++

    条款20:避免PUBLIC接口出现数据成员 条款21:尽可能使用CONST 条款22:尽量用传引用而不用传值 条款23:必须返回一个对象时不要试图返回一个引用 条款24:在函数重载与设定参数默认值间慎重选择 条款25:避免对指针与数字...

    Effective C++(第三版)

    条款20:宁以pass-by-reference-to-const替换pass-by-value prefer pass-by-reference-to-const to pass-by-value. 条款21:必须返回对象时,别妄想返回其reference don't try to return a reference when you must ...

    Effective C++ 中文版

    条款20:宁以pass-by-reference-to-const替换Pass-by-value 条款21:必须返回对象时,别妄想返回其reference 条款22: 将成员变量声明为private 条款23: 宁以non-member、non-friend替换member函数 条款24:若...

    (1)定义4个接口:UserDao、BoardDao、TopicDao、ReplyDao (2)编写UserDao接口的实现类UserDaoImp1

    (1)定义接口:UserDao、TopicDao (2)声明接口的方法 UserDao:查找用户、增加用户、修改用户 TopicDao:查找主题、增加主题、修改主题、删除主题 实现思路及关键代码 (1)定义接口UserDao (2)声明UserDao...

    1.3:接口的特点总结.pdf

    接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符为public,不能修改。(默认为public) 接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)。 接口中只能有方法、属性、索引器、...

    C# 修饰符:private protected internal public

    文档中通过代码、图片详细的描述了C#五大修饰符的区别。我整理了挺久,希望对大家有用。

    cPanel-PublicAPI:一个与cPanel的各种API接口的perl模块

    名称cPanel :: PublicAPI-与cPanel交互的Perl接口概要 use cPanel::PublicAPI;# Auto detect authentication informationmy $cp = cPanel::PublicAPI->new();# or specify a user/passwordmy $cp = cPanel::Public...

    thinkphp5 家庭数据中心系统

    ... ...后期免费升级。 请进入演示仔细体验:http://1667577dv1.imwork.net/family/public/admin ...数据备份:备份数据、让数据永不丢失。 数据恢复:恢复数据、让数据快速还原。 七、家庭成员: 成员列表:增加管

    C++语言中类、继承、多态等的用法?

     <私有数据成员和成员函数>; protected:  <保护数据成员和成员函数>; public:  <公有数据成员和成员函数>; } <各个成员函数的实现>; 继承是面向对象设计的基本特征之一,是从已有的类基础上建立新类。...

    1.5:接口和抽象类的区别.pdf

    2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的...

    Network Security:Private Communication in a Public World

    Network Security:Private Communication in a Public World 第二版

    题目:显示宠物信息(Dev C++运行可通过但是会警告)(纯虚函数、父类指针、动态多态性、继承)

    数据成员(protected): char name[20]; // 姓名; int age; // 年龄; char color[20]; // 颜色 函数成员(public): 构造函数 Pet (char n[], int a , char c[]);(提示:形参分别表示:姓名,年龄,颜色) ...

    Nager.PublicSuffix:.NET publicsuffix域解析器

    Nager.PublicSuffix TLD激增使得难以检查域名是否有效。 该项目使用publicsuffix.org(一个已知的公共域后缀(TLD)的列表)规则来验证域并将其分为三个部分(TLD,域,子域)。 验证规则直接从加载。 域名包含三...

    接口知识点总结

    1)接口里的所有属性都是public static final的; 2)接口里的所有方法都是public abstract的; 3)接口与接口之间可以继承 如: public interface InterfaceA extends InterfaceB{} 4)类可以实现接口,一个类可以多实现...

    C++静态成员变量和静态成员函数的使用方法总结

    和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)...

    googleapis, Google api的public 接口定义.zip

    googleapis, Google api的public 接口定义 Google api这个库包含支持REST和gRPC协议的public api原始接口定义。 阅读原始界面定义可以更好地理解 Google api并帮助你更高效地利用它们。 你还可以将这些定义与开源...

    使用this指针访问对象的数据成员

    #include using namespace std; class Test { public: Test(int = 0); void print()const; private: int x; }; Test::Test(int value) :x(value) { }....

    详解C++编程中的静态成员与可变数据成员

    类可以包含静态成员数据和成员函数。当数据成员被声明为“静态”时,只会为类的所有对象保留一个数据副本。 静态数据成员不是给定的类类型的对象的一部分。因此,静态数据成员的声明不被视为一个定义。在类范围中...

    Awesome Public Datasets:公开数据集,大部分免费,涵盖机器学习、自然语言处理、图像识别等领域.zip

    Awesome Public Datasets:公开数据集,大部分免费,涵盖机器学习、自然语言处理、图像识别等领域.zip,A topic-centric list of HQ open datasets. PR ☛☛☛

Global site tag (gtag.js) - Google Analytics