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