C 中的虛擬函數允許衍生類別重新定義從基底類別繼承的方法,實現多態。其語法為:在基底類別中用virtual關鍵字宣告虛擬函數,在衍生類別中用override重新定義。透過指標或引用呼叫虛擬函數,可實現衍生類別物件呼叫基底類別虛函數。虛函數的主要作用包括:實作多態、支援動態綁定和提供抽象。
C 中的虛擬函數
#簡介
虛函數是一種特殊類型的成員函數,允許衍生類別重新定義從基底類別繼承的方法。這樣可以實現多態,即派生類別物件可以以與基底類別物件相同的方式處理。
語法
虛函數在基底類別中聲明,使用virtual
關鍵字:
class Base { public: virtual void func() { /* ... */ } };
在衍生類別中,可以重新定義虛擬函數:
class Derived : public Base { public: void func() override { /* ... */ } };
虛擬函數呼叫透過指標或引用完成,因此衍生類別物件可以呼叫父類別中的虛擬函數:
Base* base = new Derived; base->func(); // 调用 Derived::func()
實戰案例
考慮以下範例:
class Shape { public: virtual double area() const = 0; }; class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} double area() const override { return _radius * _radius * 3.14; } double _radius; }; class Square : public Shape { public: Square(double side) : _side(side) {} double area() const override { return _side * _side; } double _side; }; int main() { Shape* shapes[] = {new Circle(5), new Square(4)}; double total_area = 0; for (Shape* shape : shapes) { total_area += shape->area(); } std::cout << "Total area: " << total_area << std::endl; }
此範例中,基底類別Shape
定義了一個抽象函數area()
,衍生類別 Circle
和Square
提供自己的實作。主函數建立一個 Shape
指標數組,指向衍生類別的對象,並透過虛擬函數呼叫計算總面積。
作用
虛函數的主要作用包括:
以上是C++ 函式可以宣告為虛函式嗎?虛函數的作用是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!