类为什么能这样访问其成员???
如题:
c++数据结构书上有这样的一段程序:
string::string(const string &ob)
{
....
.......
curlen=ob.curlen;
.......
}
其中int curlen是类对象string 的private 成员。我不太明白为什么在构造函数里
ob对象能够直接访问其private成员curlen,当然在非构造函数里这样又不可呢?
有那位能帮忙解释一下?
谢谢!!!!!
推荐阅读
不是构造也可以啊,类对象的私有成员可以被自己的成员函数所访问。当然也可以被从同一个类实例化的对象所访问。
非构造函数里,也可以这样访问。
为什么这样我想有两个原因:
1、效率。写成引用就是为了效率,如果还进行函数调用......
2、安全性的带来的问题不大。只在本类里访问一个本类变量时允许。
成员函数当然可以访问自己的成员了!
原因是类的封装!
想一下多个类变量只有一个函数副本。
那么:
“类对象的私有成员可以被自己的成员函数所访问。当然也可以被从同一个类实例化的对象所访问”
就更加容易理解了。
我也是恍然大悟,呵呵。
同类型的对象可以访问对方的private成员
这是因为访问限制是在类/类型级别上(类的所有实例)的
而不是在对象级别上(类的某个特定实例)
goodboy1881(三井),讲得很有道理。
模板
为什么c++把访问限制定义在类级别上呢?
我觉得是效率和安全的折衷。而不是理所当然的就允许访问。
请看楼主的这个函数:
string::string(const string &ob)
{
curlen=ob.curlen;
}
为什么要const string &ob?
难道没有一点不安全感吗?


讨论区