一.选择题(每题只有一个最佳答案,每题2分,一共40分)
1. 有关构造函数的说法不正确的是 D 。
A. 构造函数名字和类的名字一样
B.构造函数在说明类变量时自动执行
C. 构造函数无任何函数类型
D.构造函数有且只有一个
2. 有关类的说法不正确的是 D 。
A. 类是一种用户自定义的数据类型
B. 只有类中的成员函数才能存取类中的私有数据
C. 在类中,如果不作特别说明,所指的数据均为私有类型
D. 在类中,如果不作特别说明,所指的成员函数均为公有类型
3. 有关类和对象的说法不正确的是 C 。
A. 对象是类的一个实例
B. 任何一个对象只能属于一个具体的类
C. 一个类只能有一个对象
D. 类与对象的关系和数据类型和变量的关系相似
4. 下面有关重载函数的说法中正确的是 D 。
A. 重载函数必须具有不同的返回值类型
B. 重载函数形参个数必须不同
C. 重载函数名可以不同
D. 重载函数必须有不同的形参列表
5. 已知类Sample中的一个成员函数说明如下:
void Set(Sample &a);
其中,Sample &a 的含义是 C 。
A. 指向类Sample 的指针为a
B. 将a的地址值赋给变量Set
C. a是类Sample的对象引用,用来作函数Set()的形参
D. 变量Sample与a按位相与作为函数Set()的参数
6. 一个类的友元函数能够访问该类的 D 。
A.私有成员 B.保护成员 C.公有成员 D.所有成员
7. 在私有继承中,基类的公有成员将成为其派生类的 C 成员。
A.公有 B.保护 C.私有 D.静态
8. 类的默认的无参构造函数 D 。
A. 在任何情况下都存在
B. 仅在未定义无参构造函数时存在
C. 仅在未定义有参构造函数时存在
D. 仅在未定义任何构造函数时存在
9. 在C++中,通过 A 的机制可以扩充和完善旧的程序设计以适应新的需要。
A. 继承 B. 封装 C. 多态 D. 重载
10. 虚函数与重载函数的关系以下说法正确的是 D 。
A. 重载函数的返回类型及所带的参量可以不同
B. 重载函数只要求函数名相同即可
C. 虚函数返回类型不同也可
D. 虚函数要求函数名、返回类型、参量个数、参量类型和顺序都与基类中原型完全相同。
11. 有以下类的说明,请指出错误的地方 B 。
class CSample
{
int a=2.5; A
Csample(); B
Public:
CSample(int val); C
~CSample(); D
};
12. 若类Aa和类Bb的定义如下:
class Aa
{
int i,j;
public:
void get();
};
class Bb:Aa
{
int k;
public:
void make();
//…
};
void Bb::make()
{
k=i*j;
}
则上述定义中, D 是非法的表达式。
A. void get(); B. int k;
C. void make(); D. k=i*j;
13. 假设person是一个类,p1是该类的一个对象,p2是指向p1的指针,getname是该类的一个成员函数,则以下不正确的表达是 C 。
A. ame() B. p1.getname()
C. p1.person::getname() D. p2->getname()
14. 有4个类:disp为基类,它含有一个需传递一个参数的构造函数,用它来为其私有成员x赋值,并显示;类a中含有一个disp类的成员对象;类b为类a的派生类,并在其中也含有一个disp类的成员对象;类c是类b的派生类。类的构造如下,请填写出正确的输出结果。
#include<iostream.h>
class disp
{ int x;
public:
指向类成员函数的指针 disp(int x){disp::x=x; cout<<”class disp”<<endl;}
};
class a
{ disp dl;
public:
a(int x):dl(x){cout<<”class a”<<endl}
};
class b:public a
{ disp d2;
public:
b(int x):a(x),d2(x){cout<<”class b”<<endl}
};
class c: public b
{ public:
c(int x):b(x)
{cout<<”class c”<<endl;}
};
void main()
{
c obj(5);
}
运行结果为:
(14)A
(15) B
(16) A
(17) C
(18)D
A. class disp B.class a C.class b D.class c
19. 应在下列程序划线处填入的正确语句是
#include<iostream.h>
class Base
{ public:
void fun(){cout<<”Base::fun”<<endl;
};
class Derived:public Base
{ void fun()
{ C
cout<<”Derived::fun”<<endl;
}
}
A. fun(); B. Base.fun();
C. Base::fun(); D. Base->fun();
20. 下面程序哪句是错误的 C 。
class base{
//…
};
class derive:base{
//…
};
main()
{
base obj1,*ptr1; A
derive obj2; B
ptr1=&obj2; C
ptr1=&obj1; D
//…
}
二.填空题 (1,2题3分,2,3,4,5,6,7题各9分,一共60分)
1. 构造函数 是个特殊成员函数,用于初始化类的数据成员。
2. 派生类从基类私有派生时,基类的共有成员在派生类中是 私有 成员。
3. swap()函数利用引用作为参数实现两个变量的交换,将程序填写完整。
#include<iostream.h>
void swap( int &x,int &y )
{
int temp;
temp=x;
x=y ;
y=temp;
}
void main()
{
int a,b;
cin>>a>>b;
swap( a,b );
cout<<a<<””<<b<<endl;
}
4. 下面程序的运行结果是 x=6 y=6
x=y
#include<iostream.h>
class Sample
{
int x,y;
public:
Sample(){x=y=0;}
Sample(int a,int b){x=a;y=b;}
~Sample()
{
if(x==y)
cout<<”x=y”<<endl;
else
cout<<”x!=y”<<endl;
}
void disp()
{ cout<<”x=”<<x<<”y=”<<y<<endl;}
};
void main()
{
Sample s1(6,6);
S1.disp();
}
n=30,k=3
n=20,k=3
n=10,k=3
5. 下面程序的运行结果是 #include<iostream.h>
class CSample
{ int n;
static int k;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论