內聯函數將函數體嵌入呼叫點,提升效能和程式碼體積,但可讀性較低;虛擬函數透過多態性呼叫子類覆寫的函數,提高靈活性,但運行時開銷較高。
#內聯函數
##內聯函數是編譯器在呼叫時將函數體嵌入到呼叫點,而不是執行函數呼叫過程的函數。優點:
缺點:
語法:
inline int sum(int a, int b) { return a + b; }
虛擬函數
虛擬函數是透過繼承機制實現多態性的函數。當呼叫父類別物件上的虛擬函數時,實際呼叫的函數由物件的動態類型決定。優點:
缺點:
和
override 關鍵字。
語法:
class Base { public: virtual void print() { std::cout << "Base" << std::endl; } }; class Derived : public Base { public: virtual void print() override { std::cout << "Derived" << std::endl; } };
異同比較:
內聯函數 | 虛擬函數 | |
---|---|---|
函數體嵌入 | #間接呼叫 | |
更高 | 較低 | |
#更小 | 更大 |
#低較高
多態性
###不支援######支援###################實戰案例:###### ###可以用內嵌函數實作簡單的數學運算,例如求和:###inline int sum(int a, int b) { return a + b; } int main() { std::cout << sum(1, 2) << std::endl; // 输出:3 }###可以用虛擬函數實作圖形繪製介面:###
class Shape { public: virtual void draw() = 0; }; class Circle : public Shape { public: virtual void draw() override { std::cout << "Drawing a circle" << std::endl; } }; int main() { Shape* shape = new Circle(); shape->draw(); // 输出:Drawing a circle }
以上是C++ 內嵌函數與虛擬函數的異同的詳細內容。更多資訊請關注PHP中文網其他相關文章!