C++多态性(二)解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译环境:Windows 7
Visual Studio 2010
一、实验题目:定义一个哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义Speak()成员函数,基类中定义为虚函数,定义一个Dog类的对象,调用Speak函数,观察运行结果。
二、实验目的:了解并掌握虚函数的用法
三、实验分析:略
四、实验代码:
#include
using namespace std;
class Mammal
{
public:
virtual void speak()
{
cout<<"Mammal的成员函数speak()被调用"< } }; class Dog:public Mammal { public: void speak() { cout<<"Dog的成员函数speak()被调用"< } }; int main() { Dog d; Mammal m; Mammal *mammal=&d; Dog *dog=&d; d.speak(); dog->speak(); m.speak(); mammal->speak(); return 0; } 五、实验结果: 一、实验题目:对Point类重载++(自增)、--(自减)运算符 二、实验目的:熟练掌握重载运算符 三、实验分析:++对横坐标和纵坐标均加1,--对横坐标和纵坐标均减1 前置++,先加后使用,前置--,先减后使用 后置++,先使用后加,后置--,先使用后减 四、实验代码: #include using namespace std; class Point { public: Point(int xx,int yy):x(xx),y(yy){} int Getx() { return x; } Point &operator++(); Point operator++(int); Point &operator--(); Point operator--(int); int Gety() { return y; } void display() { cout<<"<"< } private: int x,y; Point &Point::operator ++() { x++; y++; return *this; } Point Point::operator ++(int) { Point old=*this; ++(*this); return old; } Point &Point::operator -- () { x--; y--; return *this; } Point Point::operator -- (int) { Point old=*this; --(*this); return old; } int main() { Point p(1,2); (p++).display(); (++p).display(); (p--).display(); (--p).display(); return 0; } 五、实验结果: 一、实验题目:声明一个Shape抽象类,再此基础上派生出Rectangle和Circle类,二者都有GetArea()函数计算对象的面积,GetPerim()函数计算对象的周长。 二、实验目的:熟练掌握类的用法 三、实验分析:略 四、实验代码: #include using namespace std; double pi=3.1415; class Shape { public: virtual double GetArea()=0; virtual double GetPerim()=0; }; class Rectangle:public Shape { public: Rectangle(double l,double w):len(l),wid(w){} double GetArea() { return len*wid; } double GetPerim() { return 2*len+2*wid; } private: double len,wid; }; class Circle:public Shape { public: Circle(double a):r(a){} double GetArea() { return pi*r*r; } double GetPerim()