C++多态性(二)解答

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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()

相关文档
最新文档