描述
在下面的编辑器中的Begin-End之间补充代码,设计人类、英语学生类和复读机类三个类,具体要求如下:
- 人类( Chinese )
- 它有一个保护成员变量 string name 。
- 它有一个虚函数 greet,函数输出中文问候,即你好 name。
- 英语学生类( EnglishLearner )
- 继承 Chinese 类,重写 greet 函数,访问性为 public,输出英文问候,即Hello name。
- 复读机类( Repeater )
- 继承 Chinese 类,以 public 访问性重写 greet 函数,函数调用 Chinese 类的 greet 函数。
程序代码如下:
#include <iostream>
#include <string>
using namespace std;
/********* Begin *********/
//人类的声明
class Chinese {
};
//人类的定义
//英语学生类的声明
class EnglishLearner : public Chinese {
};
//英语学生类的定义
//复读机类的声明
class Repeater : public Chinese {
};
//复读机类的定义
//普通函数的定义
void greeting(Chinese *p) {
}
/********* End *********/
int main() {
string name;
cin >> name;
Chinese *ps[3];
//申请内存
ps[0] = new Chinese(name);
ps[1] = new EnglishLearner(name);
ps[2] = new Repeater(name);
for (int i = 0; i < 3; i++)
greeting(ps[i]);
//释放内存
for (int i = 0; i < 3; i++)
delete ps[i];
return 0;
}
输入
输入姓名。
输出
你好 姓名
hello 姓名
你好 姓名
输入输出示例
输入 | 输出 | |
示例 1 | 李云龙 | 你好 李云龙 hello 李云龙 你好 李云龙 |
#include <iostream>
#include <string>
using namespace std;
class Chinese
{
protected:string name;
public:
Chinese(string name_)
{
name = name_;
}
virtual void greet()
{
cout << "你好 " << name << endl;
}
};
class EnglishLearner : public Chinese
{
public:
//string name;
EnglishLearner(string name) :Chinese(name)
{
name = name;
}
void greet()
{
cout << "hello "<< name << endl;
}
};
class Repeater : public Chinese
{
public:
//string name;
Repeater(string name) :Chinese(name)
{
name = name;
}
void greet()
{
Chinese::greet();
}
};
void greeting(Chinese* p)
{
p->greet();
}
int main()
{
string name;
cin >> name;
Chinese* ps[3];
//申请内存
ps[0] = new Chinese(name);
ps[1] = new EnglishLearner(name);
ps[2] = new Repeater(name);
for (int i = 0; i < 3; i++)
greeting(ps[i]);
//释放内存
for (int i = 0; i < 3; i++)
delete ps[i];
return 0;
}