請問c中在派生類中若要訪問基類成員要使用什麼關鍵字

2021-03-04 07:09:47 字數 1805 閱讀 4298

1樓:黃邦勇帥哥哥

直接訪問就行了,若是派生類覆蓋了同名的基類成員則使用::作用域解析運算子即可,若基類的成員是私有的則派生類是無法訪問基類的成員的。

示例:class a;

class b:public a

};void main()

2樓:匿名使用者

如果是基類的public或protected成員,直接訪問即可

如果是private成員,則不能訪問,是成員變數,則看有沒有提供訪問函式

3樓:匿名使用者

什麼關鍵字都不需要,直接訪問即可

c++中派生類如何訪問基類成員變數?

4樓:匿名使用者

t=animal.a;

這句話不行。a是乙個普通成員變數,只有對乙個具體的物件,才會有.a這種用法。

5樓:匿名使用者

很簡單,fish改成這樣就可以了:

class fish:public animalint t;

void fw()

};因為fish是animal的子類,對於fish的任何乙個物件,它也擁有animal的特徵,所以a也是fish的。

6樓:匿名使用者

這裡a是public的可以直接訪問

void fw()

當然為了表明它屬於基類:

可以void fw()

如果是protected的也是這樣做。

如果你把它弄成private的了,可以在基類中定義public的乙個相應的gette/setterr函式即可。

如果實在不想這麼做,又想訪問,可以用指標的方法無視許可權任意塗改,當然你要知道你的目的

別弄錯了,因為正常合法是不允許這麼做的,但練習無所謂。

7樓:匿名使用者

問題1:靜態變數可以通過繼承到子類裡,但是你不可能通過子類對x進行第二次初始化,絕對報錯

問題2:你可以在子類裡去修改這個靜態變數,但是在修改這個值之後,即使你去調基類的foo函式,x還是你在子類裡已經修改了的值,因為子類和基類的x其實是同乙個,他們是同一塊記憶體。

問題3:在基類裡沒法訪問派生類的x。你可以通過多型的特性,在子類父類裡寫乙個虛函式來設定x的值,然後通過使用a的指標去呼叫b類裡的方法。

但是對靜態變數而言沒有什麼意義,因為他們是同乙個東西,在哪修改都一樣。

8樓:淺淺

c++中派生類對基類成員的訪問形式主要有以下兩種:

1、內部訪問:由派生類中新增成員對基類繼承來的成員的訪問。

2、物件訪問:在派生類外部,通過派生類的物件對從基類繼承來的成員的訪問。

三種繼承方式下,派生類對基類成員的訪問規則。

1、私有繼承的訪問規則

2、公有繼承的訪問規則

3、保護繼承的訪問規則

c++中派生類如何使用基類中的資料成員

9樓:匿名使用者

如果你是派生類例項,這個結果是正確的,派生後會覆蓋基類成員。

10樓:匿名使用者

派生類中繼承了基類的資料成員,只有基類中的受保護

或者公有資料成員在被進行保護或公有繼承時才能被派生類訪問到。基類的私有成員是不可能被派生類訪問到的。你用get()函式訪問基類中的相同的資料成員,但是派生類既然已經繼承了基類,自然基類的資料成員也繼承了,這時候你訪問的派生類的成員(不是你派生之後又新增的成員)時,實際上訪問的就是基類的成員啊。

當然從實質上來看就是派生類的成員。

什麼關鍵字用於在C中從派生類中訪問基類的成員

base.成員名 無法訪問基類的私有 private 成員 base,可以呼叫基類的成員 請問c 中在派生類中若要訪問基類成員要使用什麼關鍵字?直接訪問就行了,若是派生類覆蓋了同名的基類成員則使用 作用域解析運算子即可,若基類的成員是私有的則派生類是無法訪問基類的成員的。示例 class a cla...

C 基類指標指向派生類指標時,指標可以用派生類的非虛方法嗎

需要知道一些常識,乙個類所有的函式都是再code 區中唯一的存放乙份。而資料成員則是每個物件儲存乙份,並按照宣告順序依次存放。類a中有了虛函式就會再類的資料成員的最前面新增乙個vfptr指標 void vfptr 這個指標用來指向乙個vtable表 乙個函式指標陣列 乙個類只有乙個該錶 該錶儲存著當...

C已經在派生類中重定義了抽象類中的純虛函式,為什麼還不讓我用派生類定義物件

抽象類中的純虛函式為 void printarea const但是派生類中的虛函式為 void printarea circle const void printarea rectangle const void printarea const 這些派生類中的函式與抽象類中純虛函式只是重名,但是並不...