首页 新闻 会员 周边 捐助

C++类中的拷贝构造函数的问题

0
悬赏园豆:10 [已解决问题] 解决于 2013-06-30 15:10
 1 #include<iostream>
 2 #include<windows.h>
 3 using namespace std;
 4 class T
 5 {
 6 private:
 7     int x;
 8 public:
 9     T(int r):x(r){};
10     T(const T& t){x=3*t.x;}
11     void show(){cout<<"x="<<x<<endl;}
12 };
13 int main()
14 {
15     T t1(2);
16     T t2(t1);
17     t1.show();
18     t2.show();
19     system("pause");
20 }

很简单的一个例子,我不明白为什么里面的拷贝构造函数中直接可以有t.x这样的表达式存在,因为我知道如果main()中有cout<<t.x<<endl; 这样的句子一定会报错的,麻烦解释下什么情况下可以像这样直接使用“对象名.私有变量名”?

wkl7123的主页 wkl7123 | 初学一级 | 园豆:154
提问于:2013-06-12 16:22
< >
分享
最佳答案
0

T对象的成员函数可以访问所有的变量,private类型自然也可以访问,即使是其它T对象的私有变量也可以访问。

而main函数不属于T对象,自然不能访问t变量。

收获园豆:7
天方 | 大侠五级 |园豆:5432 | 2013-06-12 21:16

T1的成员函数可以访问T2的私有变量,太神奇了?有没有很强大的论据?

wkl7123 | 园豆:154 (初学一级) | 2013-06-12 22:26
其他回答(1)
0

因为copy构造函数是在类的定义内,被copy的那个实例也是本类的,所以,不算越权。

属于正常访问本类的变量。

虽然不是同一个实体,但是,属于同一个定义。

收获园豆:3
硬盘很大 | 园豆:16 (初学一级) | 2013-06-14 16:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册