1.设有数组定义: char array []=“China”;则数组array所占的存储空间为 D
A 4个字节
B 5个字节
C 6个字节
D 7个字节
解:
数组中包含了五个字母和一个字符串结尾’\0’,总共6个字节
2.在32位环境下,程序的输出结果是2014
#include<iostream>
using namespace std;
class Base
{
public:
virtual int foo(int x)
{
return x * 10;
}
int foo(char x[14])
{
return sizeof(x) + 10;
}
};
class Derived: public Base
{
int foo(int x)
{
return x * 20;
}
virtual int foo(char x[10])
{
return sizeof(x) + 20;
}
} ;
int main()
{
Derived stDerived;
Base *pstBase = &stDerived;
char x[10];
printf("%d\n", pstBase->foo(100) + pstBase->foo(x));
return 0;
}
解:int foo(char x[14]) 参数传的是指针,指针是4个字节
3.假定T是一个C++类,下列语句执行之后,内存里创建了9个T对象
T b(5);
T c[6];
T &d = b;
T e=b;
T *p = new T (4);
解:b(5)创建1个,c[6]创建了6个,引用没有创建新对象,拷贝构造创建1个新对象,最后指针创建了1个,所以总共9个
4.定义函数模板add,以下说法正确的有 BC
A pfun2 = add失败,需要显示定义为pfun2 = add
B pfun1 = add
C pfun3 = add失败,add无法正确推导
D pfun4 = add失败,函数指针不可赋值
解:
A:pfun2 = add的错误提示不是pfun2 = add,而是 no matches converting function ‘add’ to type 'const int (*)(int&, int&);
B:pfun1的参数和返回值一致,可以自动推导,正确赋值;
C:pfun3 = add赋值失败,失败原因和A一样;
D:pfun4 = add显示的指定类型T为int型,赋值正确
5.以下关于内联函数,说法正确的是ABC
A 一般用于加快程序执行速度
B 可能减小可执行文件大小
C 可能增加可执行文件大小
D 以上说法都不正确
6.堆栈溢出一般是由什么原因导致的BC
A 函数代码长度过长
B 循环的递归调用
C 大数据结构的局部变量
D 代码运行时错误
解:
(1) 代码存储在程序区,与栈没有关系。
(2)递归涉及到压栈入栈。
(3)局部变量存在栈区。
(4)栈的大小是固定的