C++ 抽象類快速使用

FBshark發表於2024-05-05

在C++中,你可以透過在類定義中使用純虛擬函式(pure virtual Function)來建立一個抽象類。這裡的“抽象”意味著這個類不能被例項化,即你不能建立這個類的物件。

在C++中,你可以透過在類定義中使用純虛擬函式(pure virtual Function)來建立一個抽象類。這裡的“抽象”意味著這個類不能被例項化,即你不能建立這個類的物件。

抽象類中至少包含一個純虛擬函式。這個純虛擬函式是一個不需要被實現的函式,它的存在僅僅是為了確保派生類提供具體的實現。

下面是一個C++抽象類的例子:

class Shape {
protected:
    int width, height;
public:
    Shape( int a = 0, int b = 0 )
    {
        width = a;
        height = b;
    }
    // 純虛擬函式
    virtual int area() = 0;
};

在這個例子中,Shape類是一個抽象類,因為它包含一個純虛擬函式area()。這意味著Shape不能被例項化,只能被繼承。任何繼承Shape的類都必須提供area()函式的具體實現。

下面是一個繼承Shape類的Rectangle類的例子:

class Rectangle: public Shape {
    public:
    Rectangle( int a = 0, int b = 0 ):Shape(a, b) { }
    int area () {
        return (width * height);
    }
};

在這個例子中,Rectangle類繼承了Shape類,並提供了area()函式的具體實現。現在你可以建立一個Rectangle物件並呼叫它的area()函式。

int main()
{
    Rectangle Rec(10, 7);
    cout << "Total Area: " << Rec.area() << endl;
    return 0;
}

這個程式會輸出:Total Area: 70

請注意,抽象類不能被直接例項化,你必須例項化一個派生類的物件。如果嘗試例項化一個抽象類的物件,編譯器會報錯。

相關文章