首頁 >後端開發 >C++ >C++ 中如何宣告和呼叫虛擬函式?

C++ 中如何宣告和呼叫虛擬函式?

WBOY
WBOY原創
2024-04-12 16:03:021176瀏覽

虛函數是一種多態性機制,允許衍生類別覆寫其基底類別的成員函數:宣告:在函數名稱前加上關鍵字 virtual。呼叫:使用基底類別指標或引用,編譯器將動態綁定到衍生類別的適當實作。實戰案例:透過定義基底類別 Shape 及其衍生類別 Rectangle 和 Circle,展示虛擬函數在多態中的應用,計算面積和繪製形狀。

C++ 中如何声明和调用虚函数?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn