问答题
问答题1:以下代码输出的是?
#include <stdio.h>
int main(){
char a[10] = {
'1','2','3','4','5',\
'6','7','8','9',0};
int i = 8;
char* p = a + i;
printf("%s\n", p - 3);
return 0;
}
提示:这道题靠的是字符串结尾的结束符,如果把左后一个字符 0
换成'0'
,那么结果是未定义的,因为这并不是一个完整的字符串,一个完整的字符串后面一定要有一个反斜杠0表示字符串的结束.数字0也可以代表'\0'
问答题2:当一个类对象的生命周期结束后,关于调用析构函数的描述正确的是:
(A) 如果派生类没有定义析构函数,则只调用基类的析构函数
(B) 如果基类没有定义析构函数,则只调用派生类的析构函数
(C) 先调用派生类的析构函数,后调用基类的析构函数
(D) 先调用基类的析构函数,后调用派生类的析构函数
提示:析构函数就算没有定义,也会调用编译器默认的析构函数,析构函数和构造函数正好相反,首先构造基类对象,然后构造派生类对象,所以析构函数,先调用派生类的析构,再调用基类的析构函数.
问答题3:在函数中如何返回两个参数
在c
语言中可以利用结构体,数组,两个指针,或者两个全局变量,但是在 c++ 中是可以利用花括号{}
直接返回两个参数的
问答题4:下面代码输出啥?
int main(){
vector<int>array;
array.push_back(100);
array.push_back(300);
array.push_back(300);
array.push_back(300);
array.push_back(300);
array.push_back(500);
vector<int>::iterator itor;
for (itor = array.begin(); itor != array.end(); itor++{
if (*itor == 300){
itor = array.erase(itor);
}