part 2html
#include<iostream> #include<string> using namespace std; class MachinePets{ public: MachinePets(const string s):nickname(s){} string getNickname()const{ return nickname; } virtual string talk()=0; private: string nickname; }; class PetCats:public MachinePets{ public: PetCats(const string s):MachinePets(s){} string talk(){ return " says miao wu~"; } }; class PetDogs:public MachinePets{ public: PetDogs(const string s):MachinePets(s){} string talk(){ return " says wang wang~"; } }; void play(PetCats *a) { cout<<a->getNickname()<<a->talk()<<endl; } void play(PetDogs *a) { cout<<a->getNickname()<<a->talk()<<endl; } int main(){ PetCats cat("miku"); PetDogs dog("da huang"); play(&cat); play(&dog); return 0; }
结果:ios
总结:函数
一、若是用a.xxxxx,会出现[Error] request for member 'getNickname' in 'a', which is of pointer type 'PetCats*' (maybe you meant to use '->' ?);spa
二、在机房作的时候会出现cannot declare variable to be of abstract type的错误,和百度里解释的一一对应检查过了也没什么发现,过了几天在本身电脑重打一遍就正常运行了,也不太清楚咋回事;code
三、这个继承派生虚函数什么的,不太会分红好几个文件写哎。htm
实验四评论:blog
一、https://www.cnblogs.com/hongzai1206/p/10903128.html继承
二、https://www.cnblogs.com/jackyayue/p/10887554.htmlget
三、https://www.cnblogs.com/fifi1224/p/10895590.htmlstring