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