访问私有变量疑问的解决

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

“呵呵,你说得没错,访问权限是应该对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。

看来我对很多东西还是不懂,呵呵,长路漫漫,吾将上下求索……

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航