C++ private 封装私有成员问题

18686651213 Cocos2d-x基础-C++... 最后由 wangstevens0412 于2014年05月11日回复

  • 3 回答
  • 2.3k 浏览

我先贴我的代码。多余的代码我省略了。

int main(){
Profession pro1 = Profession();
Profession pro2 = Profession();
pro2 = pro1;
return 0;
}

class Profession
{
private:
char * name;
int age;
char sex;
public

...:

}

Profession & Profession::operator = (const Profession & right){
strcpy(this->name,right.name);
this->age = right.age;
this->sex = right.sex;
return *this;
}

红色放大部分

这里的pro对象是一个已经存在的对象那么为什么用句柄的方式来获取私有成员变量?而不是用getAge()方法来获取?既然定义成private的形式。那么这么取值是不是有问题?C++

  • 小提琴/wx 2014年04月16日 回答 #1楼
  • 严格来说应该用getAge()方法,像楼主直接这样些也行,只是在实际开发中可能会比较难以控制,一个变量的读写应该有一个统一的入口和出口
  • 1 评论
  • acely_ra 2014年04月16日 回答 #2楼
  • 成员变量应该配备getter和setter函数,等工程做大了方便统一管理
  • 1 评论
  • wangstevens0412 2014年05月11日 回答 #3楼
  • 对于类的内部来说应该高内聚,operator=方法直接引用它的私有变量,未尝不不可。对于外部来说,就不应该直接访问它的私有变量,从设计上说,它不应该被发现。若需要提供,则必然要提供getter的方法。
  • 0 评论