在C++类设计中,C++成员变量都应该设置为private,其理由如下:

1)保持语法一致性

如果所有的成员变量都是private,那么用户访问成员变量时都必须通过调用函数,保证了调用的一致性。如类对象a,它有一个成员函数GetName(), 它调用函数获取成员变量name的形式:a->GetName(),而如果直接将name声明为public,那么它的调用形式为:a->name。也即类对象调用成员函数和成员变量的形式是不一样的,造成了语法上的不一致性。

2)可以对成员变量的处理有更精确的控制

如果将成员变量设置为public,那么用户可以对其进行随意的读写操作,而如果用成员函数来控制,那么可以实现其是否可访问,是否可读,是否可写等属性。如:

 1 class AccessLevels
 2 {
 3     public:
 4         int getReadOnly() const { return readOnly; }
 5         void setReadWrite(int value) { readWrite = value;}
 6         int getReadWrite() const { return readWrite; }
 7         void setWriteOnly(int value) { writeOnly = value; }
 8     private:
 9         int noAccess; //can't access
10         int readOnly; // only can read
11         int readWrite; // can read and write
12         int writeOnly; // only can write
13 };
View Code

相关文章: