溫馨提示×

c++ class類純虛函數(shù)怎么寫

c++
小樊
83
2024-09-24 23:44:16
欄目: 編程語言

在 C++ 中,當一個類含有至少一個純虛函數(shù)時,這個類被稱為抽象類。純虛函數(shù)的聲明語法是在函數(shù)聲明的結(jié)尾處添加 “= 0”。以下是一個包含純虛函數(shù)的抽象類的示例:

#include <iostream>

// 聲明一個抽象類 Shape
class Shape {
public:
    // 構(gòu)造函數(shù)
    Shape() {
        std::cout << "Shape constructor called." << std::endl;
    }

    // 虛析構(gòu)函數(shù)
    virtual ~Shape() {
        std::cout << "Shape destructor called." << std::endl;
    }

    // 純虛函數(shù) area,計算面積
    virtual double area() const = 0;

    // 純虛函數(shù) perimeter,計算周長
    virtual double perimeter() const = 0;
};

// 定義一個繼承自 Shape 的子類 Circle,表示圓形
class Circle : public Shape {
public:
    // 構(gòu)造函數(shù),接收半徑作為參數(shù)
    Circle(double radius) : radius_(radius) {
        std::cout << "Circle constructor called with radius: " << radius_ << std::endl;
    }

    // 析構(gòu)函數(shù)
    ~Circle() {
        std::cout << "Circle destructor called." << std::endl;
    }

    // 實現(xiàn)純虛函數(shù) area,計算圓形的面積
    double area() const override {
        return 3.14159 * radius_ * radius_;
    }

    // 實現(xiàn)純虛函數(shù) perimeter,計算圓形的周長
    double perimeter() const override {
        return 2 * 3.14159 * radius_;
    }

private:
    // 成員變量,表示圓的半徑
    double radius_;
};

int main() {
    // 由于 Shape 是抽象類,不能創(chuàng)建它的實例
    // Shape shape; // 這行代碼會導致編譯錯誤

    // 創(chuàng)建一個 Circle 對象
    Circle circle(5.0);

    // 調(diào)用 area 和 perimeter 函數(shù)
    std::cout << "Circle area: " << circle.area() << std::endl;
    std::cout << "Circle perimeter: " << circle.perimeter() << std::endl;

    return 0;
}

在這個示例中,我們定義了一個抽象類 Shape,它包含兩個純虛函數(shù) area()perimeter()。然后我們定義了一個繼承自 Shape 的子類 Circle,并實現(xiàn)了這兩個純虛函數(shù)。在 main() 函數(shù)中,我們創(chuàng)建了一個 Circle 對象,并調(diào)用了它的 area()perimeter() 函數(shù)。

0