实验三 构造函数和析构函数 - 参考答案

2018-11-27 09:57

实验三 构造函数和析构函数 参考答案

班级: 学号: 姓名: 成绩:

一. 实验目的

1.理解构造函数和析构函数作用;

2.掌握各种类型的构造函数和析构函数的使用; 3.掌握构造函数和析构函数的调用顺序。

二. 使用的设备和仪器

计算机+Windows XP +Visual C++6.0

三. 实验内容及要求

1.阅读程序,写出运行结果,然后上机运行,将得到的运行结果与前面的结果进行比较。最后要求对每一行输出进行分析。 (1)

#include using namespace std; class MyClass { public:

MyClass(); MyClass(int xx); MyClass(int xx,int yy); MyClass(MyClass &); void Display(); void Set(int, int); ~ MyClass(); private: int x,y; };

MyClass:: MyClass() {

cout<<\执行无参构造函数:\; x=0;y=0;

cout<<\}

MyClass:: MyClass(int xx) {

cout<<\执行一个参数构造函数:\; x=xx;y=0;

cout<<\}

MyClass:: MyClass(int xx,int yy) {

cout<<\执行两个参数构造函数:\; x=xx;y=yy;

cout<<\}

MyClass:: MyClass(MyClass &a) {

cout<<\执行复制构造函数:\; x=a.x;y=a.y;

cout<<\}

void MyClass:: Display() {

cout<<\执行显示函数:\; cout<<\}

void MyClass:: Set(int xx=0,int yy=0) {

cout<<\执行设置函数:\; x=xx;y=yy;

cout<<\}

MyClass:: ~MyClass () {

cout<<\执行析构函数:\; cout<<\}

void main() {

MyClass a(12,34); a.Set(20); a.Display(); MyClass b(a); b.Display(); MyClass c; {

MyClass e(788,453); d.Display();

MyClass d(222);

}

}

c.Display();

运行结果:

执行两个参数构造函数:x=12y=34 //主函数第一行,定义对象a,调用带两个参数的构造函数 执行设置函数:x=20y=0 //主函数第二行,通过对象a调用成员函数Set(int, int) 执行显示函数:x=20y=0 //主函数第三行,通过对象a调用成员函数Display()

执行复制构造函数:x=20y=0 //主函数第四行,用已有对象a初始化对象b,调用复制构造函数 执行显示函数:x=20y=0 //主函数第五行,通过对象a调用成员函数Display() 执行无参构造函数:x=0y=0 //主函数第六行,定义对象c,调用不带参数的构造函数

执行一个参数构造函数:x=222y=0 //主函数第七行,定义对象d,调用带一个参数的构造函数 执行两个参数构造函数:x=788y=453 //主函数第九行,定义对象e,调用带两个参数的构造函

执行显示函数:x=222y=0 //主函数第十行,通过对象d调用成员函数Display() 执行析构函数:x=788y=453 //主函数第十一行,撤销对象e,调用析构函数 执行显示函数:x=0y=0 //主函数第十二行,通过对象c调用成员函数Display() 执行析构函数:x=222y=0 //主函数结束,撤销对象d,调用析构函数 执行析构函数:x=0y=0 //主函数结束,撤销对象c,调用析构函数 执行析构函数:x=20y=0 //主函数结束,撤销对象b,调用析构函数 执行析构函数:x=20y=0 //主函数结束,撤销对象a,调用析构函数 Press any key to continue

(2)

#include using namespace std; class A { public:

A(int x=100,double y=1.2){a=x;b=y;} void show(char *pt) { } private: int a; double b; }; void main() {

A obj1,obj2(100,3.5); obj1.show(\ obj2.show(\

cout<

A *p; p=&obj1;

p->show(\ (*p).show(\ p=&obj2;

p->show(\ (*p).show(\ p=new A;

p->show(\ delete p; }

运行结果:

obj1: //主函数第二行通过对象obj1调用成员函数show() a=100 b=1.2

obj2: //主函数第三行通过对象obj2调用成员函数show() a=100 b=3.5

p->obj1: //主函数第六行通过指向对象的指针p调用成员函数show(),p指向对象obj1 a=100 b=1.2

(*p)obj1: //主函数第七行通过指向对象的指针p调用成员函数show(),p指向对象obj1 a=100 b=1.2

p->obj2: //主函数第九行通过指向对象的指针p调用成员函数show(),p指向对象obj2 a=100 b=3.5

(*p)obj2: //主函数第十行通过指向对象的指针p调用成员函数show(),p指向对象obj2 a=100 b=3.5

p->new: //主函数第十二行通过动态创建的对象指针p调用成员函数show() a=100 b=1.2

Press any key to continue

(3)

#include using namespace std; class Complex { public:

Complex();

Complex (double x, double y); Complex (Complex & c);

};

Complex::Complex() { }

Complex::Complex(double x, double y) { }

Complex::Complex(Complex & c) { }

Complex::~ Complex () {

cout<<\析构函数被调用: (\}

//函数定义

Complex fun(Complex c) {

cout<<\在函数 fun()中.\ double x, y; x=c.GetRel()*10; y=c.GetImg()+100; Complex temp(x, y); return temp; }

void main() {

Complex c1(6.8, 98.23),c2; c2=fun(c1);

cout<<\cout<

rel = c.rel; img = c.img;

cout<<\复制构造函数被调用: \cout<<\

rel=x; img=y;

cout<<\构造函数被调用: (\

rel=0; img=0;

cout<<\缺省构造函数被调用: \ cout<<\~ Complex ();

double GetRel() { return rel;} double GetImg() { return img;} double rel, img;

private:


实验三 构造函数和析构函数 - 参考答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:数据结构习题册

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

马上注册会员

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