首页 > C/C++语言 > C/C++基本语法 > 数据成员-私有的和受保护的,喜欢哪一个?
2006
07-08

数据成员-私有的和受保护的,喜欢哪一个?

类的数据成员通常是其实现的一部分,而非其接口的一部分。当该类的内部实现改变后,其数据成员是可以被替换的。因此,对其它类而言,它们应该被隐藏起来。如果派生类需要存取这些数据成员,它们应该使用专门的存取方法“getter”,而不是直接存取。只有这样,才能到达当基类改变后,不需要修改派生类:

class Date {
private:
int d,m,y // 如果表示日期是实现细节问题!
public:
int Day() const {return d; }
};
class DateTime : public Date {
int h,m,s
};

现在假设Date类被大部分显示设备使用,所以必须提供一些方法将整型转换成可显示的字符串。为了增强性能,在设计上做了改动:不用三个整型表示日期,而是改用单个串来表示。上述的 DateTime 类依赖 Date 类的内部实现,因此也要跟着作一些改动。但是,由于它只能通过存取方法存取 Date 的数据成员,所以只要对Date::Day()稍做修改即可。注意存取方法都是内联的,所以在使用时不会导致任何开销。


留下一个回复