CC++程序设计高起专练习题Word下载.docx
《CC++程序设计高起专练习题Word下载.docx》由会员分享,可在线阅读,更多相关《CC++程序设计高起专练习题Word下载.docx(27页珍藏版)》请在冰豆网上搜索。
B.int*p=newint[10];
D.int*p=newint[40](0))
C.int*p=newint;
11.下列关于虚基类的描述,错误的是(
A.设置虚基类的目的是为了消除二义性
B.虚基类的构造函数在非虚基类之后调用
C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用
D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数
12.已知:
print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。
A.voidprint()const;
B.constvoidprint();
C.voidconstprint();
D.voidprint(const);
13.在下面有关静态成员函数的描述中,正确的是()。
A.在静态成员函数中可以使用this指针
B.在建立对象前,就可以为静态数据成员赋值
C.静态成员函数在类外定义时,要用static前缀
D.静态成员函数只能在类外定义
14.在下列关键字中,用于说明类中公有成员的是()。
A.publicB.privateC.protectedD.friend
15.以下有关继承的叙述正确的是()。
A.构造函数和析构函数都能被继承
B.派生类是基类的组合
C.派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员
D.基类的公有成员一定能被派生类的对象访问
16.下列各种高级语言中,不是面向对象的程序设计语言的是()。
A.C++B.JavaC.VBD.C
17.下列说法中正确的是()。
A.类定义中只能说明函数成员的函数头,不能定义函数体
B.类中的函数成员可以在类体中定义,也可以在类体之外定义
C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D.在类体之外定义的函数成员不能操作该类的私有数据成员
18.静态数据成员的初始化必须在(A.类内B.类外
19.使用派生类的主要原因是(
A.提高代码的可重用性
C.加强类的封装性
20.编译时的多态性通过使用(
A.构造函数B.虚函数
21.下列关于运算符重载的描述中,A.可以改变运算符的目数C.可以改变运算符的结合性
C.构造函数内D.静态成员函数内)。
B.提高程序的运行效率
D.实现数据的隐藏)实现。
C.重载函数D.析构函数正确的是()。
B.可以改变运算符的优先级
D.可以改变运算符的功能
22.如有以下模板类定义:
Template<
classT>
classsum{Ta,b;
Public:
sum(Tx,Ty);
}
则在类体外定义构造函数正确的是(
A.template<
sum:
:
sum(Tx,Ty){a=x;
b=y;
typenameT>
C.template<
sum<
T>
D.sum<
26.
关于new运算符的下列描述中,()是错的。
31.C++利用()实现面向对象程序设计的封装性。
A.构造数据类型——类B.构造数据类型——枚举
32.在声明类时,下面的说法正确的是()。
A.可以在类的声明中给数据成员赋初值
B.数据成员的数据类型可以是register
C.private、public、protected可以按任意顺序出现
D.没有用private、public、protected定义的数据成员是公有成员
1.静态的成员函数没有隐含的
、判断题
this指针,所以它们只能访问静态的数据成员。
2.通过类对象可以访问类中所有的成员。
()
3.构造函数是可以被派生类继承的。
4.构造函数和析构函数都可以是虚函数。
5.只有类中全部函数都为纯虚函数时,该类才被称为抽象类。
6.对于同一个运算符来说,重载的运算符的优先级比未重载的运算符的优先级高。
7.一个类的友元一定是另一个类的成员函数。
8.C++中,对象保存在内存中,栈内存是自动分配和释放的,而堆内存需要用户自己
申请和释放。
三、简答题
1.什么是封装性请举例说明。
2.什么是函数重载和运算符重载为什么要使用重载
3.拷贝构造函数在哪几种情况下被调用
4.什么是类什么是对象对象与类的关系是什么
5.什么是面向对象程序设计
6.什么是继承性请举例说明。
7.结构struct和类class有什么异同
8.在定义拷贝构造函数时,为什么通常还要定义一个重载的赋值运算符
9.什么是消息消息具有什么性质
10.若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题
四、程序分析题
1.指出下面程序中的1处错误,并说明原因。
#include<
>
classPoint
{
intX,Y;
public:
Point(){X=0;
Y=0;
}
Point(intx=0,inty=0){X=x;
Y=y;
voiddisplay(){cout<
<
X<
"
"
Y<
endl;
}};
voidmain()
Pointp;
();
答:
2.指出下面程序中的1处错误,并说明原因。
classCTest{public:
CTest(){x=20;
private:
intx;
friendvoidfriend_f(CTestfri);
};
voidfriend_f(CTestfri){=55;
CTestc1,c2;
(c2);
}答:
3.写出下面程序的运行结果#include<
classTest{private:
intnum;
Test(intn=0){num=n;
num++;
~Test(){cout<
”Destructorisactive,number=”<
num<
voidmain()
Testx[2];
cout<
”Exitingmain”<
4.写出下面程序的运行结果。
#include<
classTest{private:
staticintval;
inta;
staticintfunc();
staticvoidsfunc(Test&
r);
intTest:
val=20;
func()
{val--;
returnval;
}voidTest:
sfunc(Test&
r){=25;
cout<
Result3="
;
}voidmain()
{cout<
Resultl="
Test:
func()<
Testa;
Result2="
()<
Test:
sfunc(a);
5.指出下列程序中的1处错误,并说明为什么。
classStudent{
charname[10];
intage;
floataver;
voidprintStu();
Studentp1,p2,p3;
=30;
etint()<
"
<
array[1].getfloat()<
8.写出下面程序的运行结果
classA
inta;
A(intaa=0){a=aa;
a="
a<
classB
intb;
B(intbb=0){b=bb;
b="
b<
classC:
publicB
Aa;
C(){cout<
”Cdefaultconstructor”<
C(inti,intj):
a(i),B(j){cout<
”Cconstructor”<
Cc1,c2(5,6);
9.写出下面程序的输出结果。
#include<
classA
staticintn;
intX;
A(intx=0){X=x;
n++;
~A(){n--;
staticintGetNum(){returnn;
}voidprint();
voidA:
print(){cout<
n="
n<
X="
X<
endl;
}intA:
n=0;
A*p=newA(12);
p->
print();
Aa(34);
deletep;
cout<
A:
GetNum()<
10.写出下面程序的运行结果。
{public:
intn;
classB:
virtualpublicA{};
classD:
publicB,publicC
intgetn(){returnB:
n;
Dd;
n=10;
n=20;
n<
五、完成程序题
1•请在横线处填上适当的字句,以使程序完整。
#inelude<
#include
classPoint
doubleX,Y;
①Line;
publ