客观题
-
可以在一个函数中定义另一个函数
错。C/C++不支持嵌套函数 -
main函数必须放在其他函数之前
错。main函数可以放在任意位置,但是必须保证main函数内部调用的函数,在main之前进行声明或定义 -
构成C++语言程序的基本单位是类
对。 -
所有被调用的函数一定要在调用之前进行定义。
错。可以定义也可以声明 -
声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,()
指向函数的指针 int (*P) (int );
含有10各元素的数组的指针 int ( (*p)[10]) (int *); -
在x86_64环境下,int(*b)[10][10]; sizeof(b)=( )
题中定义了指向2维数组的指针变量b,64位系统下,一个指针变量占8字节 -
STL容器是线程安全的
错。并不是所有STL容器都是线程安全的 -
当内存容量不够时,vector内部内存扩展方式是翻倍
对 -
std::sort可以是不稳定排序
对。数量大时用快速排序。数量中等时用堆排序。数量少时用插入排序。 -
std::string中可以存储多个’\0’字符
对 -
std::bitset是一个存储bit的STL容器
对 -
std::stack默认是用deque实现的
对 -
C++将父类的析构函数定义为虚函数,下列正确的是哪个( )
A 释放父类指针时能正确释放子类对象
B 释放子类指针时能正确释放父类对象
C 这样做是错误的
D 以上全错
[析构函数]
用来完成对象被删除前的一些清理工作。析构函数是在对象的生存期即将结束的时刻被自动调用的。
析构函数通常也是类的一个公有函数成员。和构造函数不同的是析构函数不接收任何参数,但可以是虚函数。
如果不进行显示说明,系统也会生成一个函数体为空的隐含析构函数。
在派生过程中,基类的析构函数也不能继承下来,如果需要析构的话,就要在派生类中声明新的析构函数。
析构函数的执行次序:执行析构函数的函数体->调用派生类新增的类类型对象的析构函数->调用基类析构函数。
[虚析构函数]
在C++中,不能声明虚构造函数,但是可以声明虚析构函数。
如果一个类的析构函数是虚函数,那么由它派生而来的所有子类的析构函数也是虚函数,此时保证使用基类类型的指针就能够调用适当的析构函数针对不同的对象进行清理工作。
答案为A