虛擬函式!!謝謝

2023-02-09 07:05:36 字數 396 閱讀 3925

1樓:匿名使用者

這個程式之所以會報錯,是因為在類graduate裡面出現了歧義:你重新定義了函式display,雖然這個函式在基類是虛擬函式,但是在此類中你改變了它的返回值,使得這個定義變成了一個新的函式的定義,但是類graduate又繼承了基類的display函式,這兩個函式不能形成過載,所以在這裡display函式既不是過載的又不是覆蓋基類的虛擬函式,所以編譯器會報錯!

應該將類graduate中的函式display返回型別與基類保持一致。這樣才能構成虛擬函式的覆蓋,達到目的。

#include

#include

using namespace std;

class student

virtual void display()上面修改後就可以了。

csizeof 虛擬函式和 虛繼承

虛繼承是和多繼承相關的,你這裡沒有多繼承,virtual沒有意義!除非b的派生類的派生類採用多繼承,並且繼承了兩個以上的b的派生類或子孫類,虛繼承沒有什麼用處 虛繼承,是為了消除繼承體系中的的鑽石菱形,而定製的,沒有別的作用。不管有沒有虛繼承,只要有虛擬函式,就會有虛擬函式表,就會在物件裡安排一個和...

虛擬函式和純虛擬函式的兩個基礎小問題

純虛擬函式就是 強636f707962616964757a686964616f31333262373361制 要求在派生出具體類的時候 必須定義出的函式,否則該派生類就無法定義具體物件 而虛擬函式則可重新定義也可以不重新定義 說得對。而僅僅站在使用的角度去說,虛擬函式和純虛擬函式都可以實現多型的功能...

C 的虛擬函式有什麼用呢,C 中虛擬函式的作用是什麼?它應該怎麼用呢?

主要用在繼承抄與多型上 比如有一個襲汽車類,它有bai一個虛du函式alarm 就是鳴笛的聲zhi 音。汽車類有很多子 dao類,比如卡車類,小轎車類,他們的鳴笛聲音都一樣,所以只需繼承汽車類,不用在每個類裡重寫這個函式。現在如果新增一個卡丁車類,它的鳴笛聲音和其他類都不一樣,那就可以在這個類裡重寫...