猫猫哥

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
// 单纯从语言上来说,两者唯一的区别是,默认成员是公有还是私有

// 从使用习惯上
// 小的消极对象,包含公有数据,没有或仅有很少的基本的成员函数 --  数据容器
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,结构是否需要重新设计
posted on 2018-12-24 00:59  猫猫哥  阅读(238)  评论(0编辑  收藏  举报