主页 > 人工智能  > 

【EffectiveC++】4.设计与声明


Item22 将成员变量声明为private

有以下几个优势:

1. 语法一致性:访问class成员时每一个都是函数,不需要记住是否需要小括号

2. 使成员变量的处理有更精准的控制

class AccessLevels { public: int getReadOnly() const { return readOnly; } void setReadWrite(int value) { readWrite = value; } int getReadWrite() const { return readWrite; } void setWriteOnly(int value) { writeOnly = value; } private: int noAccess; // 无访问动作 int readOnly; int readWrite; int writeOnly; };

3. 实现良好的封装特性

实现平均速度有两种方法: 通过成员变量记录平均值,同时还得维护累计总量等其他信息,会使内存空间变大;被调用时才会计算平均值,可以改动实现方法,较为灵活(缺点是执行速度变慢) class SpeedDataCollection { public: void addValue(int speed) { speedList.push_back(speed); } double averageSoFar() const { int sum = std::accumulate(speedList.begin(), speedList.end(), 0); return static_cast<double>(sum)/speedList.size(); } private: std::vector<int> speedList; }; 封装后,只有成员函数能影响它们 如果不封装,改变成员变量,涉及改动的代码太多,维护成本高protected成员变量同样不具备良好的封装性,因为派生类的代码会受影响

标签:

【EffectiveC++】4.设计与声明由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【EffectiveC++】4.设计与声明