访问私有变量疑问的解决

“呵呵,你说得没错,访问权限是应该对class控制还是应该对object控制 在各个语言里不尽相同,但C++选择了class。
既然这样,那么“CMyString a_cOther的变量m_pcData明明是私有的”说得就不对了,应该理解为m_pcData对非CMyString(继承这里先不谈)而言是私有的,而不能理解为m_pcData对非a_cOther而言是私有的。”
周星星(http://blog.vckbase.com/bruceteen)在给我的上一篇疑问中作了这样的解答。

按照他的意思,应该是对于相同类的不同对象ObjA和ObjB,他们应该是可以互相访问对方的私有变量的。
我做了这样的尝试。
新建一个类
class CTest
{
public:
void SetValue(int a_iValue);
int GetValue();
void SetValue(CTest a_cTest);
CTest(int a_iValue = 0);
virtual ~CTest();

private:
int m_iTest;
};

各个函数的实现如下:
CTest::CTest(int a_iValue)
{
m_iTest = a_iValue;
}

CTest::~CTest()
{

}

void CTest::SetValue(CTest &a_cTest)
{
m_iTest = a_cTest.m_iTest;
a_cTest.m_iTest = -1;
}

int CTest::GetValue()
{
return m_iTest;
}

void CTest::SetValue(int a_iValue)
{
m_iTest = a_iValue;
}

如果他说话是对的话,那么下面一段程序

int iTmp = 1;
CTest clsTest1(iTmp);
CTest clsTest2;
clsTest2.SetValue(clsTest1);
不仅可以运行,而且最后的结果应该是
clsTest1.m_iTest == -1;
clsTest2.m_iTest == 2;

运行结果果真如此。

周星星(http://blog.vckbase.com/bruceteen)的话是对的:访问权限是应该对class控制还是应该对object控制 在各个语言里不尽相同,但C++选择了class。
看来我对很多东西还是不懂,呵呵,长路漫漫,吾将上下求索……

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值