构造函数2.docx
- 文档编号:6625305
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:10
- 大小:38.98KB
构造函数2.docx
《构造函数2.docx》由会员分享,可在线阅读,更多相关《构造函数2.docx(10页珍藏版)》请在冰豆网上搜索。
构造函数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;}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 构造 函数