条款20: 避免public接口出现数据成员
其实我以前一直不明白,为什么数据成员放在PRIVATE里面,不让外面直接访问;为什么JAVABEAN要那么严格规定。发现自己对
实例了解太少了。
一个非常非常简单的例子
class speeddatacollection {
public:
void addvalue(int speed); // 添加新速度值
double averagesofar() const; // 返回平均速度
};
假设是一个监视器。需要监视每辆车的速度,然后算出平均速度,如果通过一个函数作为介质可以有两种方案:
1。申明一个变量放置平均速度值,通过averagesofar返回
2。不申明该变量,完全通过averagesofar调用来计算
以上这两种情况可以适合在不同情况下使用,比如第一种,需要频繁调用averagesofar;第二种,不常调用averagesofar;需
要修改的时候只要改改类里面的函数就好了
如果根据直接变量返回呢?你可能整个程序都是用该变量返回,如果遇到如上不同情况,修改时将是一个很大的麻烦。
不过话说回来,任何东西太过都不太好,就比如将所有数据成员申明成private通过函数返回等操作。
分享到:
相关推荐
条款20: 避免public接口出现数据成员 条款21: 尽可能使用const 条款22: 尽量用“传引用”而不用“传值” 条款23: 必须返回一个对象时不要试图返回一个引用 条款24: 在函数重载和设定参数缺省值间慎重选择 条款25: ...
**条款16:在operator=中对所有数据成员赋值** - **背景**:实现赋值操作符时需要对所有数据成员进行赋值。 - **原因**:确保赋值操作符正确执行深拷贝,避免浅拷贝带来的问题。 - **示例**: ```cpp class ...
有时,我们希望数据成员在初始化后不允许被修改。这时可以使用 readonly 关键字。readonly 字段只能在构造函数中初始化,确保了数据在创建对象时的一致性: ```csharp public class Customer { private readonly ...
- **修饰符位置**:类成员修饰符(public/private/protected)位于其定义之前,如`public: void func();`。 - **注释**:对于复杂的逻辑或重要的函数,应添加足够的注释来解释其实现细节。 - **类的版式**:类的声明应...
7. **访问修饰符**:合理使用public、private、protected等修饰符,控制成员的访问范围,保护数据的安全性。 8. **测试驱动开发(TDD)**:鼓励采用TDD方法编写代码,先编写测试用例,再实现功能,确保代码质量。 9....
结构与类很相似,都表示可以包含数据成员和函数成员的数据结构。与类不同的是,结构是值类型并且不需要堆分配。结构类型的变量直接包含结构的数据,而类类型的变量包含对数据的引用(该变量称为对象)。 struct 类型...
- **版权条款**:大多数Linux驱动遵循GPL(General Public License)许可,允许自由修改和分发。 - **加入内核开发社团**:对于有兴趣贡献内核的人来说,可以通过邮件列表、IRC频道等方式加入社区参与讨论和开发。 -...
此类提供了构造函数和析构函数,以及私有数据成员`d`,表明它是Qt Embedded中处理tslib触摸屏输入的核心组件。 4. **Include Guard:** 代码中使用了`#ifndef`和`#endif`预处理器指令来创建包含保护(include guard...
实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...
实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...