91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++純虛函數如何理解

c++
小樊
81
2024-11-09 04:22:35
欄目: 編程語言

在C++中,純虛函數是一種特殊類型的虛函數,它在基類中沒有定義具體的實現。它的主要目的是強制派生類提供特定的實現。純虛函數的聲明以= 0結尾,表示它是一個純虛函數。

當我們創建一個包含至少一個純虛函數的類時,這個類被稱為抽象類。抽象類不能被實例化,也就是說,我們不能創建抽象類的對象。抽象類的主要作用是作為基類,為派生類提供一個共同的接口和一些通用的功能。

純虛函數的主要用途是實現多態。多態是指允許不同類的對象對同一消息做出響應。通過將相同的函數調用應用于不同的對象,我們可以根據對象的實際類型來執行不同的操作。純虛函數使得我們可以將一組具有相同接口但實現不同的類歸為一個基類,從而實現多態。

以下是一個簡單的純虛函數示例:

#include <iostream>

// 抽象類 Shape
class Shape {
public:
    // 構造函數
    Shape() {
        std::cout << "Shape 構造函數被調用" << std::endl;
    }

    // 虛析構函數
    virtual ~Shape() {
        std::cout << "Shape 析構函數被調用" << std::endl;
    }

    // 純虛函數 area()
    virtual double area() const = 0;
};

// 派生類 Circle
class Circle : public Shape {
public:
    // 構造函數
    Circle(double radius) : radius_(radius) {
        std::cout << "Circle 構造函數被調用" << std::endl;
    }

    // 析構函數
    ~Circle() {
        std::cout << "Circle 析構函數被調用" << std::endl;
    }

    // 實現純虛函數 area()
    double area() const override {
        return 3.14 * radius_ * radius_;
    }

private:
    double radius_;
};

// 派生類 Rectangle
class Rectangle : public Shape {
public:
    // 構造函數
    Rectangle(double width, double height) : width_(width), height_(height) {
        std::cout << "Rectangle 構造函數被調用" << std::endl;
    }

    // 析構函數
    ~Rectangle() {
        std::cout << "Rectangle 析構函數被調用" << std::endl;
    }

    // 實現純虛函數 area()
    double area() const override {
        return width_ * height_;
    }

private:
    double width_;
    double height_;
};

int main() {
    // 由于 Shape 是抽象類,我們不能創建它的對象
    // Shape shape; // 錯誤

    // 創建一個指向派生類對象的指針,指向基類
    Shape* shape = new Circle(5.0);
    std::cout << "面積: " << shape->area() << std::endl;

    delete shape; // 調用派生類的析構函數

    shape = new Rectangle(4.0, 6.0);
    std::cout << "面積: " << shape->area() << std::endl;

    delete shape; // 調用派生類的析構函數

    return 0;
}

在這個示例中,我們定義了一個抽象類Shape,它包含一個純虛函數area()。然后,我們創建了兩個派生類CircleRectangle,它們分別表示圓形和矩形,并實現了area()函數。在main()函數中,我們使用基類指針指向派生類對象,并通過基類指針調用area()函數,實現了多態。

0
桂东县| 宁晋县| 龙江县| 孝感市| 武邑县| 塘沽区| 墨玉县| 额敏县| 三原县| 巫溪县| 石首市| 齐齐哈尔市| 东台市| 大同县| 北海市| 灌云县| 兴业县| 阿拉善左旗| 昌吉市| 德州市| 江川县| 普陀区| 上杭县| 芦山县| 桃园县| 枣强县| 四平市| 和林格尔县| 方城县| 伊宁县| 吉林省| 浑源县| 巴马| 达日县| 额济纳旗| 山东省| 溧水县| 布尔津县| 旅游| 临湘市| 桦川县|