1. 程式人生 > >多型的實現方式以及動態聯編、靜態聯編

多型的實現方式以及動態聯編、靜態聯編

多型,顧名思義“ 多種狀態”,在面嚮物件語言中,介面的多種不同實現方式即為多型。  也就是允許將子類型別的指標賦值給父類型別的指標。

classA
{
public:
A();
virtualvoidk(){
qDebug()<<"aaaaaaaaa";
}
};

classB:publicA
{
public:
B();
voidk(){
qDebug()<<"bbbbbbbbbbbbb";
}
};
c++中的多型實現方法為 過載、覆蓋、函式模板三種方法。

其中過載是指在同一類中函式過載實現多型, 覆蓋則是帶有虛擬函式的繼承 。過載的多型也被稱為靜態多型(嚴格意義上來說它並不是多型),覆蓋的多型被稱為動態多型。那麼這其中的 靜 動 也涉及到靜態聯編、動態聯編。

聯編是指一個計算機程式的不同部分彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法:靜態聯編和動態聯編。

靜態聯編是指聯編工作在編譯階段完成的,這種聯編過程是在程式執行之前完成的。

靜態聯編對函式的選擇是基於指向物件的指標或者引用的型別。

在函式編譯階段就已經決定了函式的呼叫。

這相當於多型中的過載,對函式的呼叫在編譯階段完成。

動態聯編是指聯編在程式執行時動態地進行,根據當時的情況來確定呼叫哪個同名函式,實際上是在執行時虛擬函式的實現。

動態聯編中的函式呼叫是在函式執行階段才確定的。這其中就涉及到了多型中的函式覆蓋。