// 单纯从语言上来说,两者唯一的区别是,默认成员是公有还是私有
// 从使用习惯上
// 小的消极对象,包含公有数据,没有或仅有很少的基本的成员函数 -- 数据容器
struct Person_t {
string name;
unsigned age;
};
// 大的积极对象,包含私有数据,通过公有函数作为接口
class Person {
string name_;
unsigned age_; // m_age, _age, _C, __
public:
unsigned age() { return age_; } // getter / accessor 提供封装,减少耦合
void set_age(unsigned a) { age_ = a; } // setter / mutator
};
int main() {
Person_t Pt;
cout << Pt.age;
Person P;
cout << P.age();
P.set_age(4);
}
// 总结:
// 1. 包含公有数据的消极对象使用结构体struct,包含私有数据的积极对象使用类class
// 2. 使用setter/getter to访问类的数据
// 3. 如果可能避免使用setter/getter,结构是否需要重新设计