在C++中,抽象類(lèi)是不能直接實(shí)例化的。要調(diào)用抽象類(lèi)中的成員函數(shù),您需要?jiǎng)?chuàng)建一個(gè)從抽象類(lèi)派生的子類(lèi),并在子類(lèi)中實(shí)現(xiàn)抽象類(lèi)中的純虛函數(shù)。然后,您可以創(chuàng)建子類(lèi)的對(duì)象并調(diào)用其成員函數(shù)。以下是一個(gè)簡(jiǎn)單的示例:
#include <iostream>
// 抽象類(lèi) Shape
class Shape {
public:
// 虛析構(gòu)函數(shù),以便在刪除基類(lèi)指針時(shí)正確調(diào)用派生類(lèi)的析構(gòu)函數(shù)
virtual ~Shape() {}
// 純虛函數(shù),計(jì)算面積
virtual double area() const = 0;
};
// 從 Shape 類(lèi)派生的 Circle 類(lèi)
class Circle : public Shape {
public:
// 構(gòu)造函數(shù),接受半徑作為參數(shù)
Circle(double radius) : radius_(radius) {}
// 實(shí)現(xiàn)抽象類(lèi)中的純虛函數(shù) area
double area() const override {
return 3.14159 * radius_ * radius_;
}
private:
double radius_;
};
int main() {
// 由于抽象類(lèi)不能直接實(shí)例化,我們需要?jiǎng)?chuàng)建一個(gè)子類(lèi)對(duì)象
Circle circle(5.0);
// 調(diào)用子類(lèi)中的成員函數(shù) area
std::cout << "The area of the circle is: " << circle.area() << std::endl;
return 0;
}
在這個(gè)例子中,我們定義了一個(gè)抽象類(lèi)Shape
,其中包含一個(gè)純虛函數(shù)area()
。然后,我們創(chuàng)建了一個(gè)從Shape
類(lèi)派生的Circle
類(lèi),并實(shí)現(xiàn)了area()
函數(shù)。在main()
函數(shù)中,我們創(chuàng)建了Circle
類(lèi)的對(duì)象,并調(diào)用了其area()
成員函數(shù)。