实验三 多态与虚函数

2019-06-02 14:24

C++与数据结构

实验指导书

实验三 多态与虚函数

一、实验目的

1、理解多态的概念;

2、理解函数的静态联编和动态联编; 3、掌握虚函数的使用方法; 4、掌握抽象类的概念及使用方法。 二、实验内容

虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行动态联编,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。多态指同一个方法根据其所属的不同对象可以有不同的行为。

虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数

1、录入下面程序,并分析结果:

#include #include using namespace std;

class Base {

public:

Base() {cout<<\ ~Base() {cout<<\

virtual void f(int){cout<<\

virtual void f(double){cout<<\ virtual void g(int i=10){cout<<\};

class Derived : public Base {

public:

Derived() {cout<<\ ~Derived(){cout<<\ void f(complex) {

cout<<\ }

void g(int i=20){

cout<<\ } };

int main() {

cout<

Base b; Derived d;

Base *pb=new Derived; b.f(1.0); d.f(1.0); pb->f(1.0); b.g(); d.g(); pb->g(); delete pb; return 0; }

2、录入下面程序,分析运行结果: #include using namespace std; class Base {

public:

Base():data(count) {

cout<<\ ++count; }

~Base() {

cout<<\ --count; }

static int count;

int data; };

int Base::count;

class Derived : public Base {

public:

Derived():data(count),data1(data) {

cout<<\ ++count; }

~Derived() {

cout<<\ --count; }

static int count; int data1; int data; };

int Derived::count=10; int main() {

cout<

Base* pb = new Derived[3]; cout<

cout<<((static_cast(pb))+2)->data1<

cout<

3、录入下面程序,分析编译错误信息。 #include #include

#include using namespace std; class Abstract {

public:

Abstract() {

cout << \ }

virtual void f() = 0; };

int main() {

Abstract *p = new Abstract; p->f(); return 0; }

4、基类shape类是一个表示形状的抽象类,area( )为求图形面积的函数。请从shape类派生三角形类(triangle)、圆类(circles)、并给出具体的求面积函数。

#include #include using namespace std;

class Shape {public:

virtual float area( )=0 ;

};

class Triangle : public Shape {private:

float a,b;

public:

};

Triangle(float l,float h){a=l;b=h;cout<<\底:\高:\ virtual float area( ) {return 0.5*a*b;}

class Triangle1 : public Shape {private:

float x,y,z;

public:

Triangle1(float a,float b,float c){x=a;y=b;z=c;} virtual float area( ) {return

0.25*sqrt((x+y+z)*(x+y-z)*(x+z-y)*(y+z-x)); }

};

class Circle : public Shape {private:

float r;

public: };

Circle(float rr){r=rr;cout<<\半径:\ virtual float area( ) {return r*r*3.14159;}


实验三 多态与虚函数.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公司准军事化管理方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: