语句
范围for语句
C++11引入范围for语句,注意如果需要对序列中的元素执行写操作,循环变量必须声明成引用类型:
vector<int> v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for(auto &r : v)
r *= 2;
do while语句
do while与while相似,区别是,do while语句先执行循环体后检查循环条件。至少执行一次循环。注意条件后面的分号。
do
statement
while(condition);
正是因为先执行循环体才判断循环条件,所以不能在条件部分定义新的变量而在循环体里用。
goto语句:尽量不用
//...
int ix = 10;
goto end;
end:
ix = 42;
try语句块和异常处理
在C++语言中,异常处理包括:
throw表达式:抛出一个异常
try语句块:处理异常,以catch子句结束
一套异常类:用于在throw和相关的catch子句之间传递异常的具体信息
示例:把两个Sales_item对象相加,只有同一种书籍才能相加,否则抛出异常
while(cin >> item1 >> item2){
try{
if(item1.isbn() != item2.isbn())
throw runtime_error(“Data must refer to same ISBN”);
cout << item1 + item2 << endl;
}catch(runtime_error err){
cout << err.what()
<< “\nTry Again? Enter y or n” << endl;
char c;
cin >> c;
if(!cin || c == ‘n’)
break;
}
}
每个标准库异常类都定义了名为
what
的成员函数。
runtime_error
的
what()
函数返回的是初始化
runtime_error
对象时初始化它的
string
:
Data must refer to same ISBN
如果没能为异常找到匹配的catch子句,程序转到terminate的标准库函数,使程序非正常退出。