首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

在c++的拷贝函数中,一个对象引用自个儿的私有成员

2014-01-12 
在c++的拷贝函数中,一个对象引用自己的私有成员?#include iostreamusing namespace stdclass A{public:

在c++的拷贝函数中,一个对象引用自己的私有成员?


#include <iostream>
using namespace std;
class A{
public:
   A(cons& c){
     this->a=c.a;//为什么能写 c.a 呢?
     this->b=c.b;
   }
private:
    int a;
    int b;

}
int main()
{
  A cc;
  cout << cc.a ;//我知道这么写是不允许的,类的私有成员不能直接被此类的对象直接访问
             //但是为什么上面在拷贝函数中 就可以写c.a吗(为什么对象c可以直接访问私有成员a呢?
    return 0;
}

[解决办法]
私有访问权限是针对类的而不是针对对象的。really? why??

1. class X

2. {

3. int a;

4. public:

5. int fun(X& x)

6. {

7. return a+x.a;

8. }

9. };

10. int main(void)

11. {

12. X y;

13. X x;

14. x.fun(y);

15. return 0;

16. }
有人可能会理解成为成员函数fun可以访问类中私有的数据a,但是对于为什么x.a也可以访问就犹豫不解了。如果参数中强制使用this指针,他很早就会发现成员函数内部 对象/引用/指针可以访问私有数据,然后就会进一步想为什么,然后就会发现c++中访问权限控制是针对类的,而不是针对对象的。这样就不会有类似 成员函数内部x.a合法 的不解了。

 也就是说私有访问权限是针对类的而不是针对对象的。
 

热点排行