在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 };