#include<iostream>
#include<string>
using namespace std;
class MachinePets{
public:
MachinePets(const string s):nickname(s) {
}
virtual string talk() const=0;
string Getnickname(){
return nickname;
}
private:
string nickname;
};
class PetCats:public MachinePets {
public:
PetCats(const string s):MachinePets(s){
}
string talk() const{
return "says miao wu~";
}
};
class PetDogs:public MachinePets {
public:
PetDogs(const string s):MachinePets(s){
}
string talk() const{
return "says wang wang~";
}
};
void play(MachinePets &m){
std::cout<<m.Getnickname()<<ends<<m.talk()<<endl;
}
int main() {
PetCats cat("miku");
PetDogs dog("da huang");
play(cat); // 按照play()形参,传递参数
play(dog); // 按照play()形参,传递参数
return 0;
}![]()
一开始的时候对抽象类掌握的非常不牢固,也没有用到抽象类,以及虚基类,掌握得不是很好,后来修修改改,并在同学的帮助下改正。
https://www.cnblogs.com/cjj1/p/10967941.html
https://www.cnblogs.com/csc13813017371/p/10966842.html
https://www.cnblogs.com/jessi-wu1005/p/10961379.html