完善Dog类的定义,使得程序正确执行:
裁判测试程序样例:
#include <iostream>
#include <string>
using namespace std;
class Pet {
public:
Pet(const string &name): m_name(name) {}
virtual void speak1() = 0;
protected:
string m_name;
};
// 请将答案填写在这里
int main() {
string name;
cin >> name;
Dog dog(name);
dog.speak2();
return 0;
}
输入样例:
在这里给出一组输入。例如:
tom
输出样例:
在这里给出相应的输出。例如:
speak2: tom
class Dog :public Pet{
public:
Dog(const string &n):Pet(n){}
void speak2(){
cout<<"speak2: "<<m_name<<endl;
}
void speak1() override { //派生类重写这个函数
cout << m_name << " says Woof!" << endl;
}
};
//纯虚函数通过在函数声明的结尾添加= 0来定义,纯虚函数的存在意味着派生类必须重写这个函数,否则派生类也将成为抽象类。抽象类不能被实例化,它只能被用作其他类的基类,用于定义接口和规范派生类的行为。