新标准C++程序设计教程习题及答案第12章.docx
《新标准C++程序设计教程习题及答案第12章.docx》由会员分享,可在线阅读,更多相关《新标准C++程序设计教程习题及答案第12章.docx(9页珍藏版)》请在冰豆网上搜索。
![新标准C++程序设计教程习题及答案第12章.docx](https://file1.bdocx.com/fileroot1/2023-2/10/e7a8883e-c32e-4fdb-988c-05129b9bb43e/e7a8883e-c32e-4fdb-988c-05129b9bb43e1.gif)
新标准C++程序设计教程习题及答案第12章
第12章
1.以下说法中正确的是()。
A.一个类一定会有无参构造函数
B.构造函数的返回值类型是void
C.一个类只能定义一个析构函数,但可以定义多个构造函数
D.一个类只能定义一个构造函数,但可以定义多个析构函数
答案:
C
2.对于强过new运算符牛成的对象()。
A.程程序结束时自动析构
B.执行delete操作时才能析构
C.在包含new语句的函数返回时自动析构
D.在执行delete操作时会析构,如果没有执行delete操作,则在程序结束时自动析构
答案:
D
3.如果某函数的返回值是个对象,则该函数被调用时,返回的对象()。
A.是通过复制构造函数初始化的
B.是通过无参构造函数初始化的
C.用哪个构造函数初始化取决于函数的return语句是怎么写的
D.不需要初始化
答案:
C
4.以下说法LE确的是()。
A.在静态成员函数中可以调用同类的其他任何成员函数
B.const成员函数不能作用于非const对象
C.在静态成员函数中不能使用this指针
D.静态成员变量每个对象有各自的一份
答案:
C
5以下关于this指针的说法中不正确的是()。
A.const成员函数内部不可以使用this指针
B.成员函数内的this指针,指向成员函数所作用的对象
C.在构造函数内部可以使用this指针
D.在析构函数内部可以使用this指针
答案:
A
6.请写出下面程序的输出结果。
classCSample{
intx;
public:
CSample(){cout<<”C1”<CSample(intn){
x=n;
cout<<”C2,x=”<}
};
intmain(){
CSamplearray1[2];
CSamplearray2[2]={6,8};
CSamplearray3[2]={12};
CSample*array4=newCsample[3];
Return0;
}
答案:
C1
C1
C2,x=6
C2,x=8;
C2,x=12
C1
C1
C1
C1
7.请写出下面程序的运行结果:
4,6
请填空:
#include
usingnamespacestd;
classSample{
public:
intv;
Sample(){}
Sample(intn):
v(n){};
Sample(constSample&x){v=2+x.v;}
};
Sample&PrintAndDouble(Sampleo)
{
cout<o.v=2*o.v;
returno;
}
intmain()
{
Samplea(5);
Sampleb=a;
Samplec=PrintAndDouble(b);
cout<cout<//cout<Sampled;
d=a;
cout<return0;
}
答案:
9
20
5
8.下面程序的输出结果是。
#include
usingnamespacestd;
classA{
intval;
public:
A(intn){
val=n;
}
intGetVal(){
returnval;
}
};
classB:
publicA{
private:
intval;
public:
B(intn):
__________{
};
intGetVal(){
returnval;
}
};
intmain(){
Bb1
(2);
cout<:
GetVal()<<"\n";
return0;
}
答案:
Val(4),A(6)
9.下面程序的输出结果是
0
5
请填空:
#include
usingnamespacestd;
classA{
public:
intval;
A(_______){
val=n;
}
______GetObj(){
return_________;
}
};
intmain(){
Aa;
cout<a.GetObj()=5;
cout<}
答案:
intn=0
A&
*this
10.下面程序的输出结果是:
10
请补充Sample类的成员函数,不能增加成员变量
#include
usingnamespacestd;
classSample{
public:
intv;
Sample(intn):
v(n){
};
______________________
Sample(Sample&obj){
this->v=2*obj.v;
};
};
intmain(){
Samplea(5);
Sampleb=a;
cout<return0;
}
答案:
Sample(Sample&obj){
This->v=2*obj.v;
};
11.下面程序的输出结构是:
5,5
5,5
请填空:
#include
usingnamespacestd;
classBase{
public:
intk;
Base(intn):
k(n){
}
};
classBig{
public:
intv;
Baseb;
Big__________{
};
Big___________{
};
};
intmain(){
Biga1(5);
Biga2=a1;
cout<cout<return0;
}
答案:
(intn):
v(n),b(n)
(Big&x):
v(x.v),b(x.b.k)
12.完成附录“魔静世界大作业”中提到的第一阶段作业
(省略)