“呵呵,你說得沒錯,存取權限是應該對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。
看來我對很多東西還是不懂,呵呵,長路漫漫,吾將上下求索……