构造函数2.docx

上传人:b****5 文档编号:6625305 上传时间:2023-01-08 格式:DOCX 页数:10 大小:38.98KB
下载 相关 举报
构造函数2.docx_第1页
第1页 / 共10页
构造函数2.docx_第2页
第2页 / 共10页
构造函数2.docx_第3页
第3页 / 共10页
构造函数2.docx_第4页
第4页 / 共10页
构造函数2.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

构造函数2.docx

《构造函数2.docx》由会员分享,可在线阅读,更多相关《构造函数2.docx(10页珍藏版)》请在冰豆网上搜索。

构造函数2.docx

构造函数2

1创建一个Employ类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。

该类中构造函数初始化每个成员,display()函数打印数据成员。

classEmployee{

public:

Employee(char*n,char*a,char*c,char*s,char*z);

voidDisplay();

protected:

charname[20];

charaddr[40];

charcity[20];

charstate[20];

charzip[10];

};

Employee:

:

Employee(char*n,char*a,char*c,char*s,char*z)

{

strncpy(name,n,20);

name[19]='\0';

strncpy(addr,a,40);

addr[39]='\0';

strncpy(city,c,20);

city[19]='\0';

strncpy(state,s,20);

state[19]='\0';

strncpy(zip,z,10);

zip[9]='\0';

}

voidEmployee:

:

Display()

{

cout<

<

<

<

}

voidmain()

{

Employem("MarkBrooks","5WestSt.","Revere","CA","12290");

em.Display();

em.Display();

}

 

2一圆型游泳池如图所示,现在需在其周围建一圆型过道,并在其四周围上栅栏。

栅栏价格为35元/米,过道造价为20元/平方米。

过道宽度为3米,游泳池半径由键盘输入。

要求编程计算并输出过道和栅栏的造价。

#include

usingnamespacestd;

constfloatPI=3.14159;

#definePI3.1415926

constfloatFencePrice=35;

constfloatConcretePrice=20;

classCircle//声明类Circle及其数据和方法

{

private:

floatradius;

public:

Circle(floatr);//构造函数

floatCircumference();//圆周长

floatArea();//圆面积

};

Circle:

:

Circle(floatr)//构造函数初始化数据成员radius

{radius=r;}

floatCircle:

:

Circumference()//计算圆的周长

{

return2*PI*radius;

}

floatCircle:

:

Area()//计算圆的面积

{

returnPI*radius*radius;

}

voidmain()

{

floatradius;

floatFenceCost,ConcreteCost;

cout<<"Entertheradiusofthepool:

";

//提示用户输入半径

cin>>radius;

CirclePool(radius);//声明Circle对象

CirclePoolRim(radius+3);

FenceCost=PoolRim.Circumference()*FencePrice;

//计算栅栏造价并输出

cout<<"FencingCostis¥"<

ConcreteCost=(PoolRim.Area()-Pool.Area())*ConcretePrice;

//计算过道造价并输出

cout<<"ConcreteCostis¥"<

}

1.选择题

(1)对类的构造函数和析构函数描述正确的是()。

A.构造函数可以重载,析构函数不能重载

B.构造函数不能重载,析构函数可以重载

C.构造函数可以重载,析构函数也可以重载

D.构造函数不能重载,析构函数也不能重载

(2)类的析构函数的作用是()。

A.一般成员函数B.类的初始化C.对象初始化D.删除对象

(3)假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为()。

A.OneClass(OneClassp);B.OneClass&(OneClassp);

C.OneClass(OneClass&p);D.OneClass(OneClass*p);

(4)下列不是描述类的成员函数的是()

  A.构造函数B.析构函数C.友元函数D.拷贝构造函数

(5)构造函数不具备的特征的是()

   A.构造函数的函数名与类名相同

   B.构造函数可以重载

   C.构造函数可以设置默认参数

   D.构造函数必须指定类型说明

(6)通常,拷贝构造函数的参数是()

  A.某个对象名B.某个对象的成员名

  C.某个对象的引用名D.某个对象的指针名

(7)类的析构函数的作用是()

  A.一般成员函数B.类的初始化

  C.对象的初始化D.删除对象创建的所有对象

(8)类的析构函数是在()调用的。

  A.类创建时B.创建对象时

  C.删除对象时D.不自动调用

 

(9)下面()项是对构造函数和析构函数的正确定义。

A.voidX:

:

X(),voidX:

:

~X()

B.X:

:

X(参数),X:

:

~X()

C.X:

:

X(参数),X:

:

~X(参数)

D.voidX:

:

X(参数),voidX:

:

~X(参数)

(10)()的功能是对象进行初始化。

A.析构函数B.数据成员C.构造函数D.静态成员函数

(11)拷贝构造函数具有的下列特点中,()是错误的。

A如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的

B拷贝构造函数只有一个参数,并且是该类对象的引用

C拷贝构造函数是一种成员函数

D拷贝构造函数的名字不能用类名

二读程序

#include

classDate

{public:

Date(int,int,int);

Date(int,int);

Date(int);

Date();

~Date(){cout<<“调用析构函数”<

voiddisplay();

private:

intmonth;

intday;

intyear;

};

Date∷Date(intm,intd,inty){month=m;day=d;year=y;}

Date∷Date(intm,intd)

{year=2005;month=m;day=d;}

Date∷Date(intm)

{day=1;year=2005;month=m;}

Date∷Date()

{month=1;day=1;year=2005;}

voidDate∷display()

{cout<

intmain()

{Dated1(10,13,2005);

Dated2(12,30);

Dated3(10);

Dated4;

d1.display();

d2.display();

d3.display();

d4.display();

return0;}

3:

下列程序的运行结果是。

#include

voidmax(Student*);

usingnamespacestd;

classStudent

{public:

Student(intn,floats):

num(n),score(s){}

intnum;

floatscore;

};

voidmain()

{Studentstud[5]={

Student(101,78.5),Student(102,85.5),Student(103,98.5),

Student(104,100.0),Student(105,95.5)};

Student*p=&stud[0];

max(p);

}

voidmax(Student*arr)

{floatmax_score=arr[0].score;

intk=0;

for(inti=1;i<5;i++)

if(arr[i].score>max_score){max_score=arr[i].score;k=i;}

cout<

}

5

#include

classTpoint

{

public:

Tpoint(intxp,intyp){x=xp;y=yp;}

Tpoint(Tpoint&p);

intxcoord(){returnx;}

intycoord(){returny;}

private:

intx,y;

};

Tpoint:

:

Tpoint(Tpoint&p)

{

x=p.x;

y=p.y;

cout<<“Copy_initializationconstructorcalled.\n”;

}

voidmain()

{

Tpointp1(5,7);

Tpointp2(p1);

cout<<“p2=”<

}

结果:

 

改错.分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。

#include

classone

{inta1,a2;

public:

one(intx1=0,x2=0);

};

voidmain()

{onedata(2,3);

cout<

cout<

3.分析以下程序的错误原因,给出修改方案使之能正确运行。

#include

classAmplifier{

floatinvol,outvol;

public:

Amplifier(floatvin,floatvout)

{invol=vin;outvol=vout;}

floatgain();

};

FloatAmplifier:

:

gain(){returnoutvol/invol;}

voidmain()

{Amplifieramp(5.0,10.0);

cout<<"\n\nThegainis=>"<

}

编程

1.建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。

#include

usingnamespacestd;

classStudent

{public:

Student(intn,floats):

num(n),score(s){}

voiddisplay();

private:

intnum;

floatscore;

};

voidStudent:

:

display()

{cout<

intmain()

{Studentstud[5]={

Student(101,78.5),Student(102,85.5),Student(103,98.5),

Student(104,100.0),Student(105,95.5)};

Student*p=stud;

for(inti=0;i<=2;p=p+2,i++)

p->display();

return0;

}

2建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

#include

#include

classEmploy

{public:

voiddisplay();

private:

charname[30];

charsweetad[100];

charcityca[100];

charyouzhen[20];

};

charname(){};

charsweetad(){};

charcityca(){};

charyouzhen(){};

voidEmploy∷display()

{cout<<<

voidmain()

{

charname[30]="wuguoyong";

charsweetad[100]="xiamenjimenqu";

charcityca[100]="fujianshengputianshifushi;

charyouzhen[20]="351146";

name.display();

sweetad.display();

cityca.display();

youzhen.display();

return0;}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1