關於類成員函式中訪問同類物件的私有成員

2021-09-02 16:29:51 字數 1755 閱讀 3983

關於類成員函式中訪問同類物件的私有成員,主要包含以下幾種場景:

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行 可以編譯...