访问私有变量疑问的解决

“呵呵,你说得没错,访问权限是应该对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。
看来我对很多东西还是不懂,呵呵,长路漫漫,吾将上下求索……

你可能感兴趣的:(C++,c,Blog,C#)