在C++中,纯虚函数是一种特殊的虚函数,它在基类中没有定义具体的实现,而是用= 0
表示。派生类必须提供纯虚函数的具体实现,否则它们也将成为抽象类,无法实例化。设计纯虚函数时,需要考虑以下几点:
class Shape {
public:
virtual double area() const = 0; // 纯虚函数
virtual double perimeter() const = 0; // 纯虚函数
virtual ~Shape() {} // 虚析构函数,以确保正确的析构派生类对象
};
class Circle : public Shape {
public:
Circle(double radius) : radius_(radius) {}
double area() const override {
return 3.14159 * radius_ * radius_;
}
double perimeter() const override {
return 2 * 3.14159 * radius_;
}
private:
double radius_;
};
class Rectangle : public Shape {
public:
Rectangle(double width, double height) : width_(width), height_(height) {}
double area() const override {
return width_ * height_;
}
double perimeter() const override {
return 2 * (width_ + height_);
}
private:
double width_;
double height_;
};
class Shape {
public:
virtual ~Shape() {} // 虚析构函数,以确保正确的析构派生类对象
virtual double area() const = 0; // 纯虚函数
virtual double perimeter() const = 0; // 纯虚函数
};
总之,设计C++纯虚函数时,需要考虑接口设计、扩展性和使用接口和抽象类。这样可以确保代码的可维护性、可扩展性和易用性。