首先說明一下c++中的靜態繫結和動態繫結
靜態繫結:在編譯時刻,根據變數的靜態型別(變數宣告為基類還是派生類)來決定呼叫哪個函式,用基類宣告的,就呼叫基類的方法,用派生類宣告的就呼叫派生類的方法。
動態繫結:在執行時刻,根據變數實際指向的物件型別(該變數指向基類還是派生類)來決定呼叫哪個函式。
c++中對普通函式時採用靜態繫結的,對虛函式是採用動態繫結的。可以看下面的例子。
另外c++對虛函式有幾點限制:
只有類的成員才可以是虛函式
靜態成員函式不能是虛函式
建構函式不能是虛函式
析構函式可以(往往)是虛函式
#include
using
namespace
std;
class a
void f2(a& a)
int main(int argc, char * argv)
C 中的動態繫結
c 中基類和派生類遵循型別相容原則 即可用派生類的物件去初始化基類的物件,可用派生類的物件去初始化基類的引用可用派生類物件的位址去初始化基類物件指標。c 中動態繫結條件發生需要滿足2個條件 1 只有指定為虛函式的成員函式才能進行動態繫結,成員函式預設為非虛函式,非虛函式不能進行動態繫結 2 必須通過...
C 中的動態繫結
c 中基類和派生類遵循型別相容原則 即可用派生類的物件去初始化基類的物件,可用派生類的物件去初始化基類的引用,可用派生類物件的位址去初始化基類物件指標。c 中動態繫結條件發生需要滿足2個條件 1 只有指定為虛函式的成員函式才能進行動態繫結,成員函式預設為非虛函式,非虛函式不能進行動態繫結 2 必須通...
C 中動態繫結
動態繫結 dynamic binding 將繫結 binding 即解析型別 成員和操作的過程從編譯時延遲到執行時。動態繫結適用於那些開發者知道某個特定的函式 成員或操作的存在,而編譯器不知道的情況。這種情況通常出現在操作動態語言 例如 ironpython 和com時。在這些情況下,如果不使用動態...