

#pragma once #include<string> using namespace std; class MachinePets { public: MachinePets(const string s); ~MachinePets(); const string getNickname(); virtual string talk(); private: string nickname; };


#pragma once #include<iostream> #include<string> using namespace std; #include "MachinePets.h" class PetCats : public MachinePets { public: PetCats(const string s); ~PetCats(); string talk(); };


#pragma once #include "MachinePets.h" #include<iostream> #include<string> using namespace std; class PetDogs : public MachinePets { public: PetDogs(const string s); ~PetDogs(); string talk(); };


#include "MachinePets.h" #include<iostream> #include<string> using namespace std; MachinePets::MachinePets(const string s):nickname(s) { } MachinePets::~MachinePets() { } const string MachinePets::getNickname() { return string(nickname); } string MachinePets::talk() { return string(); }


#include "PetCats.h" #include<iostream> #include<string> using namespace std; PetCats::PetCats(const string s):MachinePets(s) { } PetCats::~PetCats() { } string PetCats::talk() { return string("miao wu~"); }


#include "PetDogs.h" #include<iostream> #include<string> using namespace std; PetDogs::PetDogs(const string s):MachinePets(s) { } PetDogs::~PetDogs() { } string PetDogs::talk() { return string("wang wang~"); }


#include"MachinePets.h" #include"PetCats.h" #include"PetDogs.h" #include<iostream> using namespace std; void play(MachinePets* ptr) { cout << ptr->getNickname() << " says " << ptr->talk() << endl; } int main() { PetCats cat("miku"); PetDogs dog("da huang"); play(&cat); // 按照play()形参,传递参数 play(&dog); // 按照play()形参,传递参数 system("pause"); return 0; }

本文介绍了一种宠物机器人对话系统的实现方法,通过继承和多态实现了不同类型的宠物机器人(猫和狗),每种宠物都有其特定的对话内容。文章详细展示了如何使用C++进行类的定义、继承和实例化,并通过一个play函数演示了多态的运用。
2057

被折叠的 条评论
为什么被折叠?



