19.
以下叙述中正确的是()
A 使用typedef说明新类型名时,其格式是: typedef 新类型名 原类型名;
B 在程序中,允许用typedef来说明一种新的类型名
C 使用typedef 说明新类型名时,后面不能加分号
D 在使用typedef改变原类型的名称后,只能使用新的类型名
正确答案:B
注意区分
#define 后面不加分号
typed 后面要加分号
20.头文件已经正常包含,以下代码在VS IDE上编译和运行结果是
1
2
3
4
5
6
7
8
9
10
class
A{
public
:
void
test(){
printf
(
"test A"
);}
};
int
main()
{
A *pA = NULL;
pA->test();
return
0;
}
A
编译出错
B
程序运行奔溃
C
输出"test A"
D
输出乱码
正确答案:C
21.在C语言中,以下代码执行之后,*p的值为()
1
2
3
4
5
6
7
8
9
10
11
12
void
func(
int
*p){
static
int
num = 4;
p = #
(*p)--;
}
int
main(){
int
i = 5;
int
*p = &i;
func(p);
printf
(
"%d"
, *p);
return
0;
}
A 3
B 4
C 5
D 以上都不是
正确答案:C
在函数里,指针p又重新定位成num的地址空间,所以在函数中的自减是修改num的值;而当在main函数中的p指针依然指向 i 的地址空间,在func中没有被修改,那么值不变;
如果函数去掉num,如下:
void func(int *p)
{
(*p)--;
}
此时,就是修改 main函数中 i 的值了。
22.下列for循环的循环体执行次数为
1
for
(
int
i=10, j=1; i=j=0; i++, j--)
A 0
B 1
C 无限
D 以上都不对
正确答案:A
cout<<boolalpha<<(i=j=0);
cout<<boolalpha<<(i=j=1);
可以运行一下这两个结果为0,1
26.继承是面向对象的三个特点之一,下列关于继承特点的说法正确的有
A 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不可以被这个派生类的子类所访问。
B 私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。
C 公有继承的特点是基类的公有成员和保护成员都成为派生类的公有成员,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。
D 保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。
正确答案:ABD
28.在声明类时,下面的说法正确的是()
A 可以在类的声明中给数据成员赋初值(c++11新标准)
B 数据成员的数据类型可以是register
C private、public、protected可以按任意顺序出现
D 没有用private、public、protected定义的数据成员是公有成员
正确答案:AC
官方解析:C++中没有限定private、public、protected的书写次序。但是,不能在类的声明中给数据成员赋初值,数据成员的数据类型也不能是register。没有用private、public、 protected定义的数据成员是私有成员
29.以下对于方法覆盖(方法重写)的说法正确的有()
A 方法覆盖发生在同一类中
B 方法的覆盖发生在子类型中
C 方法名一定要一样
D 参数类型一定要一样
E 返回类型一定要一样
F 访问权限只能一样
正确答案:BCD
30. 以下关于类占用内存空间的说法正确的是
A 类所占内存的大小是由成员变量(静态变量除外)和虚拟函数表指针空间(若有虚函数)所决定
B 空类的内存大小是1个字节
C 类中无论有多少个虚函数,只会多占一个虚表指针空间
D 子类的内存大小等于父类的内存大小加上子类独有成员变量的内存大小
正确答案:ABCD