C 筆記(八) C 動態繫結

2021-10-03 00:27:32 字數 864 閱讀 2933

在c++中,若派生類中有與基類重名的函式,則使用派生類的;這叫函式覆蓋;

補充一點: 例:

#include class animal

~animal()

public:

void eat()

void sleep()

};class dog : public animal

~dog()

public:

void eat()

void sleep()

};int main(int argc, char* ar**)

現在定義乙個animal指標,讓他指向dog這個類,並呼叫eat這個方法;

animal *animal;

animal = &dog;

animal->eat();

我們會發現,呼叫的是animal這個類的eat這個方法。

在編譯階段,編譯器會把eat這個方法繫結到基類中去,這叫靜態多型,現在我們在基類中的eat上加virtual關鍵字。

virtual void eat()
重新執行**,會發現呼叫的是dog這個類的eat這個方法;

virtual關鍵字告訴編譯器不要使用靜態繫結來繫結該函式,在程式執行時,再去呼叫的是派生類的函式還是基類中的函式;

c 學習筆記 動態繫結

有如下c 1 2 3 4 5 6 7 8 9 structa virtualvoidbar a structb a voidbar 那麼 1 2 3 a p newb p foo p bar 這個題的結果是barfoob bar 為什麼 我們研究下哈,首先說明一下,那兩各foo 是非需函式,這是個不...

C 動態繫結

c 中動態繫結是將乙個過程呼叫與相應 鏈結起來的行為。是指與給定的過程呼叫相關聯的 只有在執行期才可知的一種繫結,他是多型實現的具體形式。c 中,通過基類的引用或指標呼叫虛函式時,發生動態繫結。引用 或指標 既可以指向基類物件也可以指向派生類物件,這一事實是動態繫結的關鍵。用引用 或指標 呼叫的虛函...

c 動態繫結

c 的函式呼叫預設不使用動態繫結。要觸發動態繫結,必須滿足兩個條件 只有指定為虛函式的成員函式才能進行動態繫結 必須通過基類型別的引用或指標進行函式呼叫 因為每個派生類物件中都擁有基類部分,所以可以使用基類型別的指標或引用來引用派生類物件 示例 include include using names...