虛函數是一種多態性機制,允許衍生類別覆寫其基底類別的成員函數:宣告:在函數名稱前加上關鍵字 virtual。呼叫:使用基底類別指標或引用,編譯器將動態綁定到衍生類別的適當實作。實戰案例:透過定義基底類別 Shape 及其衍生類別 Rectangle 和 Circle,展示虛擬函數在多態中的應用,計算面積和繪製形狀。
C 中的虛擬函數
#虛擬函數是一種多態性機制,允許衍生類別覆寫其基底類別的成員函數。這使程式設計師能夠在基底類別中定義通用的行為,同時仍允許衍生類別為該行為提供特定於其實例的實作。
宣告虛擬函數
要宣告一個虛擬函數,請在函數名稱的開頭放置關鍵字 virtual
。例如:
class Base { public: virtual void print() const; };
呼叫虛擬函數
呼叫虛擬函數,使用基底類別指標或引用。編譯器將動態綁定到衍生類別的適當實作。例如:
void doSomething(Base* base) { base->print(); }
實戰案例
下面是使用虛函數的範例:
#include <iostream> class Shape { public: virtual double area() const = 0; virtual void draw() const = 0; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : width_(width), height_(height) {} double area() const override { return width_ * height_; } void draw() const override { std::cout << "Drawing rectangle" << std::endl; } private: double width_; double height_; }; class Circle : public Shape { public: Circle(double radius) : radius_(radius) {} double area() const override { return 3.14 * radius_ * radius_; } void draw() const override { std::cout << "Drawing circle" << std::endl; } private: double radius_; }; int main() { Shape* rectangle = new Rectangle(5, 10); Shape* circle = new Circle(5); std::cout << rectangle->area() << std::endl; // Output: 50 std::cout << circle->area() << std::endl; // Output: 78.5 rectangle->draw(); // Output: Drawing rectangle circle->draw(); // Output: Drawing circle return 0; }
以上是C++ 中如何宣告和呼叫虛擬函式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!