实验三 构造函数和析构函数

2019-09-01 12:56

实验三、构造函数和析构函数

一、实验目的

1.掌握声明类的方法,类和类的成员的概念以及定义对象的方法。 2.初步掌握用类和对象编制基于对象的程序。 3.学习检查和调试基于对象的程序。

4.掌握类的构造函数和析构函数的概念和使用方法。 5.掌握对象数组、对象的指针及其使用方法。

二、实验内容

1.检查下面的程序,找出其中的错误,并改正之。然后上机调试,使之能正常运行。 (1)

#include using namespace std; class A {public:

A(int i=0){m=i;} //构造函数不要返回类型名 void show(){cout<

~A(){} //析构函数不要返回类型名 private: int m; };

int main(){ A a(5); a.show(); a.set(10); a.show(); return 0; }

//结果: //5 //10 (2)

#include using namespace std;

class X { private:

int a=0;//私有成员不允许赋初值

int &b; const int c;

void setA(int i){a=i;} X(int i){ a=i;} public:

int X(){ a=b=0;}//构造函数无返回值 X(int i, int j, int k){ a=i; b=j; c=k; }

setC(int k) const { c=c+k;}//成员函数没有标明返回值类型. };

int main() {

X x1;

X x2(2) ;//私有成员函数不可被外界访问. X x3(1,2,3) ;

x1.setA(3) ;//私有成员函数不可被外界访问. return 0 ; }

改正后的程序:

#include using namespace std; class X { private: int a; int b; int c;

void setA(int i){a=i;} X(int i){ a=i;} public:

X(){ a=b=0;}

X(int i, int j, int k) { a=i; b=j; c=k; }

void setC(int k) { c=c+k;} };

int main() {

X x1;

X x3(1,2,3);

return 0; }

2.请先阅读下面的程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。 (1)

#include using namespace std; class test{ public: test(); int getint( ){return num;} float getfloat( ){return fl;} ~test( ); private: int num; float fl; };

test::test( ) { cout << \ num=0;fl=0.0; }

test::~test( ) { cout << \}

int main( ) { test array[2]; cout << array[1].getint( )<< \ \ return 0; }

//结果:

//Initalizing default //Initalizing default //0 0

//Destructor is active //Destructor is active (2)

#include using namespace std; #include class X

{public: X(int x1,char *x2,float x3):a(x1),c(x3) { b=new char[sizeof(x2)+1]; strcpy(b,x2); } X():a(0),b(\ X(int x1,char *x2=\ X(const X&other) { a=other.a; b=\ c=other.c; } void print()

{ cout<<\ } private : int a;

char *b;

float c; };

int main(){ X *A=new X(4,\ X B,C(10),D(B); A->print(); B.print();

C.print(); D.print();

return 0;

}

结果;

//a=4 b=X::X(int,char,float) c=32 //a=0 b=X::X() c=10 //a=10 b=X::X(….) c=10 //a=0 b=X::X(const X &other) c=10

3.在实验二第2题工资管理类Salary中定义构造函数初始化工资数据的各分项数据。该类的形式如下: class Salary {public:

Salary(){初始化工资数据的各分项数据为0} Salary(……) {初始化工资数据的各分项数据} void setXX(double f){ XX=f; } double getXX(){ return XX; }

double RealSalary(){ …… }//计算实发工资 …… Private:

Bouble Wage, Subsidy, Rent, WaterFee, ElecFee; };

其中,成员函数setXX()用于设置工资的各分项数据,成员函数getXX()用于获取工资的各分项数据,XX代表Wage、Subsidy等数据成员,如Wage对应的成员函数则为setWage()和 getWage()。

实发工资=Wage+Subsidy-Rent-WaterFee-ElecFee

编程完善该类的设计,并在主函数中测试该类的各成员函数。

// 编程完善该类的设计,并在主函数中测试该类的各成员函数。 #include using namespace std; class salary { public: salary(); salary(double a,double b,double c,double d,double e) {wage=a;subsidy=b;rent=c;waterfee=d;elecfee=e;} void setwage(double f){wage=f;} void setsubsidy(double f){subsidy=f;} void setrent(double f){rent=f;} void setwaterfee(double f){waterfee=f;} void setelecfree (double f){elecfee=f;} double getwage(){ return wage; } double getsubsidy(){ return subsidy; } double getrent(){ return rent ; } double getwaterfee(){ return waterfee; } double getelecfee(){ return elecfee ; } void RealSalary(){

cout<<\最后实发的工资是:\ cout<<(wage+subsidy-rent-waterfee-elecfee)<

private:

double wage; double subsidy; double rent; double waterfee; double elecfee;


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

下一篇:小学数学优秀教学论文之《多媒体技术在小学数学教学中的应用》范

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

马上注册会员

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