關於類成員函式中訪問同類物件的私有成員,主要包含以下幾種場景:
a. 在c++的類的成員函式中,允許直接訪問該類的物件的私有成員變數。
b. 在類的成員函式中可以訪問同型別例項的私有變數。
c. 拷貝建構函式裡,可以直接訪問另外乙個同類物件(引用)的私有成員。
d. 類的成員函式可以直接訪問作為其引數的同型別物件的私有成員。
舉例:a.
#include using namespace std;
class ctest
;ctest::ctest(){}
ctest::ctest(int x)
int ctest::getx()
void ctest::setx(int x)
int main ()
b.
#include using namespace std;
class a
void show()
private:
int x;
};class ctest
;ctest::ctest(){}
ctest::ctest(int x)
int ctest::getx()
void ctest::setx(int x)
void ctest::fun()
int main ()
c.
#include using namespace std;
class ctest
;ctest::ctest(){}
ctest::ctest(int x)
int ctest::getx()
void ctest::setx(int x)
//拷貝建構函式裡,可以直接訪問另外乙個同類物件(引用)的私有成員
void ctest::copy(ctest &test)
int main ()
d.
#include using namespace std;
class ctest
;ctest::ctest(){}
ctest::ctest(int x)
int ctest::getx()
void ctest::setx(int x)
//類的成員函式可以直接訪問作為其引數的同型別物件的私有成員
void ctest::copy(ctest test)
int main ()
解釋:
私有是為了實現「對外」的資訊隱藏,或者說保護,在類自己內部,有必要禁止私有變數的直接訪問嗎?
請記住你是在定義你的類,不是在用。
c++的訪問修飾符的作用是以類為單位,而不是以物件為單位。
通俗的講,同類的物件間可以「互相訪問」對方的資料成員,只不過訪問途徑不是直接訪問.
類體內的訪問沒有訪問限制一說,即private函式可以訪問public/protected/private成員函式或資料成員,同理,protected函式,public函式也可以任意訪問該類體中定義的成員。public繼承下,基類中的public和protected成員繼承為該子類的public和protected成員(成員函式或資料成員),然後訪問仍然按類內的無限制訪問。
每個類的物件都有自己的存貯空間,用於儲存內部變數和類成員;但同乙個類的所有物件共享一組類方法,即每種方法只有乙個源本。
關於類成員函式中訪問同類物件的私有成員
原址 關於類成員函式中訪問同類物件的私有成員,主要包含以下幾種場景 a 在c 的類的成員函式中,允許直接訪問該類的物件的私有成員變數。b 在類的成員函式中可以訪問同型別例項的私有變數。c 拷貝建構函式裡,可以直接訪問另外乙個同類物件 引用 的私有成員。d 類的成員函式可以直接訪問作為其引數的同型別物...
關於類成員函式中訪問同類物件的私有成員
原址 注釋 為了尊重原作者,在不改變內容的前提下,我進行了格式和內容的編輯,增強閱讀體驗。這位兄弟的文章,挺全面的,不過也有一點囉嗦。好像這個文章的上傳作者也在杭州工作,有機會聯絡下,一起討論交流下c 的一些知識。關於類成員函式中訪問同類物件的私有成員,主要包含以下幾種場景 a 在c 的類的成員函式...
C 類中對同類物件private成員訪問
本文 私有成員變數的概念,在腦海中的現象是,以private關鍵字宣告,是類的實現部分,不對外公開,不能在物件外部訪問物件的私有成員變數 然而,在實現拷貝建構函式和賦值符函式時,在函式裡利用物件直接訪問了私有成員變數,因而,產生了困惑 下面以具體例項進行說明 疑惑 為什麼第26行和第32行 可以編譯...