virtual 虛函式的demo

2021-07-10 15:59:31 字數 758 閱讀 4532

三個名字上很相近的概念,過載,覆蓋,重寫,

這裡主要是驗證一下覆蓋,子類的方法覆蓋父類的,分別是加和不加virtual。

class basevoid getdata() const

private:

int data;

};class sub : public base

void getdata() const

};

在下面**執行

base* pointer = new sub();

pointer->getdata();

結果是

base getdata

而如果是

class base 

virtual void getdata() const

private:

int data;

};class sub : public base

void getdata() const

};

則結果是

sub getdata
也就是說,不加virtual的話,物件會從申明的物件中執行相應的方法,而如果加了virtual,則會執行實際指向的物件的方法。

原因,可以從虛函式表的角度考慮/

virtual 虛函式

virtual 虛函式 下面是對c 的虛函式這玩意兒的理解。一,什麼是虛函式 如果不知道虛函式為何物,但有急切的想知道,那你就應該從這裡開始 簡單地說,那些被virtual關鍵字修飾的成員函式,就是虛函式。虛函式的作用,用專業術語來解釋就是實現多型性 polymorphism 多型性是將介面與實現進...

虛函式(virtual)

上面提到動態多型主要通過虛函式機制實現,這裡介紹以下虛函式。和普通的函式宣告方式相同,只要在函式的返回值前加上virtual關鍵字,該函式就為虛函式,即virtual 函式型別 函式名 形式引數 虛函式的作用 允許通過基類的指標或引用來訪問基類和派生類的同名函式。include using name...

關於virtual虛函式

1.如果父類定義的是普通virtual函式,1 父類必須提供乙個實現 2 子類如果不需要實現它,可以不在函式成員中列出來,或者類檔案中列出來,不提供實現也可以 子類如果要實現它,則必須在函式成員中列出來 2.如果父類定義的是純virtual函式 1 如果子類仍是個抽象類,可以不宣告它 2 如果子類不...