在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; // 输出矩形的面积