簡體   English   中英

在C ++中訪問基類私有成員

[英]Accessing base class private members in C++

我沒有真正(非常)長時間使用C ++,這個問題可能很愚蠢,但我真的可以使用一些幫助。

如果我的基類有一個私有數據成員,並且我的派生類是公開派生的,那么基類的私有成員不會被繼承。 但是,仍然可以通過繼承的公共函數訪問它們。 例如:

class B{
int a,b;

public:
void SetA(int);
int GetA();
};

class D:public B{

public:
SetAAttribute(int x)
{ SetA(x); }

}

現在,我的問題如下:從技術上講,派生類對象沒有在它們上定義'a'屬性。 通俗地說,當基本上不存在屬性時,我基本上在實體上設置屬性。 想象這樣一個概念似乎不直觀。 我理解正確嗎?

任何額外的解釋或更正將不勝感激。

並不是該屬性不再存在,只是它隱藏在你身上。 基類方法仍然可以訪問基類成員,因為它們不會相互隱藏。

私有基礎成員是繼承的,如果您嘗試訪問它們,編譯器只會給您一個錯誤,因為您不應該直接訪問它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM