第三章 标准库类型
1.什么是默认构造函数?
ANS:默认构造函数就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式,就会使用该默认构造函数。
如果用户的定义的类中没有显式定义任何构造函数,编译器就会自动为该类生成默认构造函数,称为合成的默认构造函数。
2.解释string类型的输入操作符合getline函数分别如何处理空白字符。
ANS:
string类型的输入操作符对空白字符的处理:读取并忽略有效字符(非空白字符)之前的所有的空白字符,然后读取字符直至再次遇到空白字符,读取终止(该空白字符仍留在输入流中)。
getline函数对空白字符的处理:不忽略行开头的空白字符,读取字符直至遇到换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在string对象中)。
3.如果采用下面的方法来计算mid会产生什么结果?
vector<int>::iterator mid = (vi.begin()+vi.end())/2;
ANS:将两个迭代器相加的操作是未定义的,因此用这种方法计算mid会出现编译错误。
4.string对象和bitset对象之间是反向转化的:string对象的最右边字符(即下标最大的那个字符)用来初始化bitset对象的低阶位(即下标为0的位)。当用string对象初始化bitset对象时,记住这一差别很重要。
5.cctype定义的函数:
重要的如下:
isalnum(c) 如果c是字母或数字,则为true
isalpha(c) 如果c是字母,则为true
isdigit(c) 如果c是数字,则为true
islower(c) 如果c是小写字母,则为true
ispunct(c) 如果c是标点符号,则为true
isupper(c) 如果c是大写字母,则为true
tolower(c) 如果c是大写字母,则返回其小写字母形式,否则直接返回c
toupper(c) 如果c是小写字母,则返回其大写字母形式,否则直接返回c
6.当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的。