動態過載與靜態過載

2021-10-03 14:11:08 字數 511 閱讀 4245

了解乙個概念:動態繫結和靜態繫結:

下面看一段**:

#include

using

namespace std;

class

parent

void

foo1()

};class

son:

public parent

void

foo1()

};intmain()

執行之後,結果是:

foo from son!

foo1 from parent!

這是因為,編譯器在遇到virtual函式時,採用動態繫結,這麼講吧,

對於過載的virtual函式,呼叫哪個函式是根據物件來決定的,這是在函式執行的動態過程中完成的。

對於非virtual函式,呼叫哪個函式是根據指標型別來決定的:編譯器根據指標的型別靜態的決定出來,這是靜態繫結。

在c++中,函式預設的是靜態繫結。

靜態型別與函式過載

有以下 public class main public static class man extends human public static class woman extends human public static void sayhello human human public sta...

多型,覆蓋,過載,靜態聯編,動態聯編。

c 多型有兩種形式,動態多型和靜態多型。動態多型是指一般的多型,是通過類繼承和虛函式機制實現的多型 靜態多型是通過模板方法來實現,因為這種多型是在編譯時而非執行時,所以稱為靜態多型。動態多型例子 class cshape virtual cshape virtual void draw 0 clas...

重寫與過載

override 為覆蓋又叫重寫,從字面就可以知道,它是覆蓋了乙個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現,在介面中一般只是對方法進行了宣告,而我們在實現時,就需要實現介面宣告的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆...