6.2 参数传递
含有可变形参的函数
如果实参类型相同,可以传递一个名为initializer_list 的标准库类型
#include <initializer_list>
void error_msg(initializer_list<string> il){
for ( auto beg = il.begin(); beg != il.end; ++beg)
std::cout << *beg << "" ;
std::cout << std::endl;
}
6.3 返回类型和return语句
引用返回左值
char &get_val(string &str, string::size_type ix){
return str[ix];
}
int main(){
string s("a value");
cout << s << endl;
get_val(s, 0) = 'A';
cout << s << endl;
return 0;
}
const_cast 和 重载
string &shorterString(string &s1, string &s2){
auto &r = shorterString(const_cast<const string&>(&s1),
const_cast<const string&>(s2));
return const_cast<string&>(r);
}
assert 预处理宏
包含在cassert头文件中,不建议以assert作为变量名
NDEBUG 预处理变量
如果定义了#define NDEBUG 则关闭调试状态
_func_ 是编译器定义的一个局部静态变量,用于存放函数的名字
_FILE_ 存放文件名的字符串字面值
_LINE_ 存放当前行号的整形字面值
_TIME_ 存放文件编译时间的字符串字面值
_DATE_ 存放文件编译日期的字符串字面值