了解乙個概念:動態繫結和靜態繫結:
下面看一段**:
#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 為覆蓋又叫重寫,從字面就可以知道,它是覆蓋了乙個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現,在介面中一般只是對方法進行了宣告,而我們在實現時,就需要實現介面宣告的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆...