C++中的虚函数是一种实现多态性的工具,它允许派生类对从基类继承而来的成员函数提供新的实现。当基类指针或引用来调用虚函数时,会根据实际对象的类型自动选择适当的实现版本。下面我们来讨论如何在一个派生类中重写来自其基类的五个虚方法。
定义一个具有虚函数的基类
首先需要确保在基类中声明了这五个虚方法,以使它们可以在派生类中被重写。下面是一个简单的例子:
“`cpp
class Base {
public:
virtual void method1() = 0; //纯虚函数
virtual void method2();
virtual void method3(int param);
virtual void method4(const std::string& str);
virtual double method5(double num);
// 析构函数也应该是虚的, 确保通过基类指针删除派生类对象时正确调用派生类的析构函数
virtual ~Base() {}
};
“`
创建派生类并重写虚方法
接下来,在派生类中重新定义这些虚函数。每个重写的函数都必须与原基类中的原型相匹配,包括返回类型(除了协变返回类型)、名称、参数列表等。
“`cpp
#include
#include
using namespace std;
// 假设我们已经有了上述定义好的Base类
class Derived : public Base {
public:
// 必须重写method1(), 因为它是纯虚函数
void method1() override { cout << "Derived method1()" << endl; }
void method2() override { cout << "Derived method2()" << endl; }
void method3(int param) override { cout << "Derived method3(" << param << ")" << endl; }
void method4(const string& str) override { cout << "Derived method4(" << str << ")" << endl; }
double method5(double num) override {
cout << "Derived method5(" << num << ")";
return num 2.0;
}
};
“`
使用override关键字
注意上面代码中使用了`override`关键字,这是C++11引入的一个特性。它可以明确地指出该成员函数意在覆盖基类中的同名虚函数。如果拼写错误或者参数不一致,则编译器将报错而不是静默地创建一个新的重载版本。建议总是使用`override`来提高代码的安全性和可读性。
测试重写的虚方法
我们可以编写一段程序来验证派生类是否成功地重写了所有五个虚方法。这里我们将创建一个基类类型的指针,并让它指向一个派生类实例,然后调用各个虚函数。
“`cpp
int main() {
Base basePtr = new Derived();
basePtr->method1(); // 输出: Derived method1()
basePtr->method2(); // 输出: Derived method2()
basePtr->method3(42); // 输出: Derived method3(42)
basePtr->method4(“hello”); // 输出: Derived method4(hello)
cout <method5(3.14) << endl; // 输出: Derived method5(3.14)n6.28
delete basePtr;
return 0;
}
“`
要在一个派生类中重写基类的多个虚方法,只需按照原函数签名进行实现,并且可以使用`override`关键字来确保正确性。别忘了让基类的析构函数也是虚的,以便安全地销毁派生类对象。
本文由阿里云优惠网发布。发布者:编辑员。禁止采集与转载行为,违者必究。出处:https://aliyunyh.com/98185.html
其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。