C++訪問控制之private剖析

        今天在看C++ Primer,寫重載操作運算符練習程序的時候,在成員函數中直接操作形參中同類型對象的private成員,程序如下:

OperatorOverload& OperatorOverload::operator=(const OperatorOverload &op)
{
	m_nNum1 = op.m_nNum1;	//op.getNum1();  m_nNum1爲private
	m_nNum2 = op.m_nNum2;	//op.getNum2();  m_nNum2爲private

	return *this;
}

        程序居然可以編譯通過,讓我對private的訪問控制權限產生懷疑:不是不能訪問對象的private成員嗎?

        後來看了這篇文章,作者對C++的訪問控制進行了比較詳細的介紹,看完後對C++的private訪問控制有了新的認識。

        原來C++實例化對象的時候只是對數據成員進行實例化,成員函數是所有該類對象共享的,即一個類只有一份成員函數,類的成員函數可以訪問該類的任何數據成員,包括private和該類對象的數據成員。如果需要訪問該類多個對象的數據成員,可以在類的public函數中傳入該類對象的引用或者指針,這樣就可以操作同類其他對象的數據成員。

        總結:C++的訪問控制符是以類爲單位,而不是以對象爲單位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章