标题:一个类成员访问问题
取消只看楼主
xzx1002002
Rank: 2
等 级:论坛游民
帖 子:68
专家分:27
注 册:2006-3-7
 问题点数:0 回复次数:2 
一个类成员访问问题
下面是在百度知道发掘的一个挺有意思的问题。虽然实际中几乎不会这样来用。但是有助于深刻理解类成员的访问。

#include <iostream>
using namespace std;
class myclass{
int i;
public:
myclass(int s){i=s;}
myclass(){i=0;}
void xput(int test){i=test;}
void xget(){cout<<"i is "<<i<<"\n";}
void super_put(myclass t){i=t.i;}//直接访问了私有成员,还是用点访问的-_-
};
int main(){
myclass a,b;
int choice;
cout<<"直接访问私有成员变量测试开始……\n";
cout<<"请输入一个整数:";
cin>>choice;
a.xput(choice);
cout<<"a.xget() is ";
a.xget();
cout<<"b.xget() is ";
b.xget();
b.super_put(a);
cout<<"AFTER b.super_put(a)……\n";
cout<<"b.xget() is ";
b.xget();
return 0;
}

注意红色的一行。类对象直接访问了类的私有函数。大家可以讨论一下,这里为什么可以这样来用。
搜索更多相关主题的帖子: 类成员 百度 int myclass 
2008-08-11 13:57
xzx1002002
Rank: 2
等 级:论坛游民
帖 子:68
专家分:27
注 册:2006-3-7
得分:0 
我认为,
只要是在成员函数和友元中就可以直接访问该类的私有成员变量,无论类的对象是谁。
所以,访问类的私有成员变量的权限是相对于访问它的地方的,而不是类的对象。
2008-08-11 15:30
xzx1002002
Rank: 2
等 级:论坛游民
帖 子:68
专家分:27
注 册:2006-3-7
得分:0 
问题是两个i明显不一样,但是为什么都可以直接访问。
2008-08-12 09:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-227693-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.184218 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved