在C++中,get
和set
方法通常用于访问和修改类的私有或受保护成员变量。它们也被称为getter和setter方法。虽然你可以在虚函数中使用这些方法,但这并不是最佳实践。
在虚函数中,更推荐使用纯虚函数(pure virtual function)来实现多态。纯虚函数是在基类中声明的虚函数,它没有定义具体的实现,而是用= 0
表示。派生类必须提供纯虚函数的具体实现。这样,当使用基类指针或引用调用虚函数时,会根据对象的实际类型调用相应的实现。
例如,假设你有一个基类Shape
,其中包含一个纯虚函数area()
:
class Shape {
public:
virtual double area() const = 0; // 纯虚函数
};
然后,你可以创建不同的派生类,如Circle
和Rectangle
,分别实现area()
函数:
class Circle : public Shape {
public:
Circle(double radius) : radius_(radius) {}
double area() const override {
return 3.14159 * radius_ * 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_;
}
private:
double width_;
double height_;
};
这样,当你使用基类指针或引用调用area()
函数时,会根据对象的实际类型调用相应的实现:
Shape* shape = new Circle(5.0);
std::cout << "Area: " << shape->area() << std::endl; // 输出圆的面积
delete shape;
shape = new Rectangle(4.0, 6.0);
std::cout << "Area: " << shape->area() << std::endl; // 输出矩形的面积