c基類中的成員函式的引數是派生類怎麼辦

2021-03-03 22:35:37 字數 2337 閱讀 9968

1樓:匿名使用者

先宣告派生類,將成員函式引數設為派生類的引用#include

using namespace std;

class b;

class a;

int main()

不知道你是不是要問這個

2樓:匿名使用者

那還放在基類搞什麼,不如弄成虛擬函式。

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

3樓:匿名使用者

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

4樓:匿名使用者

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

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

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

c++中怎樣用派生類的成員函式呼叫基類的函式? 5

5樓:

public和protected函式可以直接呼叫。

如果被過載了可以使用 「基類::函式」 這樣的形式呼叫

如果是private就不行了,除非在基類友元自己

6樓:匿名使用者

你是指在派生類成員函式中呼叫基類函式嗎?可以通過基類的類名直接訪問,比如基類a的函式fun(),在派生類b的fun()中使用a::fun()就是呼叫基類的函式了。

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

7樓:匿名使用者

t=animal.a;

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

8樓:匿名使用者

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

class fish:public animalint t;

void fw()

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

9樓:匿名使用者

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

void fw()

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

可以void fw()

如果是protected的也是這樣做。

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

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

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

10樓:匿名使用者

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

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

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

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

11樓:淺淺

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

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

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

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

1、私有繼承的訪問規則

2、公有繼承的訪問規則

3、保護繼承的訪問規則

c++:派生類中重定義基類的成員函式與虛擬函式區別在**?

12樓:匿名使用者

1、c++的虛擬函式主要是為了實現多型。基類定義的虛擬函式,派生類重新定義該函式,這樣基類物件指標呼叫哪一個函式是判斷該基類指標的物件的型別。

2、虛擬函式用virtual關鍵字修飾,同時開啟動態聯編技術,動態聯編只有程式執行時才能確定呼叫的函式,在編譯階段是不知道要呼叫哪一個函式。

13樓:匿名使用者

如果加關鍵字 virtual,則是 override;

如果不加關鍵字 virtual,則跟作用域有關,基類與派生類的成員函式作用域不相同。

c中,基類是抽象類(有純虛擬函式),在派生類(公有繼承)中,能不能呼叫初始化基類物件

能呼叫如果創bai建物件是b b 2,3 那du麼就會執行b int m,int n 0 這個zhi建構函式dao,進而顯式呼叫了基類a的構專造函式a int a 因屬為初始化列表裡寫明瞭a m 構造方式 假如沒有這個a m 語句,那麼就會呼叫a的預設建構函式,但a裡沒有寫a 所以就會報錯 沒有適合...

c執行緒如何執行帶引數的類成員函式

1 在a類中新增一個執行緒方法do fun class a string s 新增一個屬性,可以傳入引數 public string para set 新加執行緒方法 public void do fun 2 傳入引數並呼叫執行緒 a a new a a.para 傳入的字串 thread t ne...

c類的成員函式前加什麼意思,C類的成員函式前加什麼意思

這個和函式引數加地址符的作用是一樣的,用於返值返回的是引用而不是賦值。也就是說,該函式返值會通過地址傳送的方式給到函式呼叫者要求的返回值,這樣可以節省物件賦值造成的記憶體浪費,通常用於返值是大型物件 而不是簡單變數型別 的時候。比如你有個class t,而這個函式的返值是return t 加上地址符...