标签:ret sys iostream vat 练习 图片 没有 虚函数 ima
Part3 简单编程练习
#include<string> #include<iostream> using namespace std; class MachinePets { public: MachinePets(const string s); virtual string talk()=0; string getNickname() { return nickname; } private: string nickname; }; class PetCats:public MachinePets{ public: PetCats(const string s); string talk(); }; class PetDogs :public MachinePets { public: PetDogs(const string s); string talk(); }; MachinePets::MachinePets(const string s) :nickname(s) { } PetCats::PetCats(const string s):MachinePets(s) { } string PetCats::talk() { string a = "miao wu~"; return a; } PetDogs::PetDogs(const string s) :MachinePets(s) { } string PetDogs::talk() { string a = "wang wang~"; return a; } void play(MachinePets *p) { cout << p->getNickname() << "says" << p->talk() << endl; } int main() { PetCats cat("miku"); PetDogs dog("da huang"); play(&cat); play(&dog); system("pause"); return 0; }
实验总结:
1.纯虚函数作用:在验证性部分,基类没有使用虚函数时,使用基类指针调用派生类成员函数,始终只有基类函数在起作用。而使用了纯虚函数之后,基类类型的指针,如果指向的是派生类的对象,那么它就可以访问这个函数,从而执行的是派生类中的函数。需要注意的是,纯虚函数是不能被调用的。
2.在有多个不同的类使用同一名称的函数时,适合用纯虚函数。
3.在编程练习部分,MachinePets(s)调用时写在函数体里不能被调用。
标签:ret sys iostream vat 练习 图片 没有 虚函数 ima
原文地址:https://www.cnblogs.com/qiuqiuwr/p/10961208.html