实验结论
Part1 验证性实验(1)
Part2 验证性实验(2)
在本实验中,抽象类shape作为三个派生类Rectangle、Circle、Triangle的共同父类,通过纯虚函数area()为整个类族提供了通用的外部接口。根据赋值兼容规则,在printArea函数中可以通过基类指针shape *p访问到p指向的派生类对象的成员。
Part3 简单编程练习
源代码:
#include <iostream>
#include <string>
using namespace std;
class MachinePets {
public:
MachinePets(const string s) :nickname(s) {}
string getNickname() const {
return nickname;
}
virtual string talk() const = 0;
private:
string nickname;
};
class PetCats :public MachinePets {
public:
PetCats(const string s) :MachinePets(s) {}
string talk() const{
return "miao wu~";
}
};
class PetDogs :public MachinePets {
public:
PetDogs(const string s) :MachinePets(s) {}
string talk() const{
return "wang wang~";
}
};
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;
}
运行结果:
Part4 应用编程实践: 简单RPG游戏补足与丰富(选做*)
实验总结与体会
1. 一方面,设计和使用虚函数允许我们可以通过基类指针访问派生类成员;另一方面,这种实现方式可以更好地表现现实世界中概念的层次结构。
2. part4选做部分补完的程序我根本就没有运行?(´???)?
面向对象程序设计(C++)_实验5_类的继承、派生和多态(2)
原文:https://www.cnblogs.com/AlexanderYang/p/10964669.html