C++ Primer 第五章笔记

C++ Primer 第五章笔记 语句

  1. 悬垂else
    C++中规定else与离他最近的尚未匹配的if匹配
    为了避免歧义,可以用花括号控制执行路径
  2. switch语句
    如果某个case标签匹配成功,将从该标签处开始顺序执行所有case分支。如果有break语句跳出switch部分,有时故意省略break语句使得程序能够连续执行若干个case标签。
  • switch内部的变量定义
    在switch语句中不能跳过带初始值的变量
case true:
	string file_name;//错误,不允许跳过一个初始化的变量
	int ival=0;//错误,不允许跳过一个初始化的变量
	int jval;//正确,因为只是声明,没有初始化
	break;
case false:
	jval=next_num();//正确,给jval赋初始值
	if (file_name.empty())//file_name在作用域(switch)内,但是没有被初始化

可以在switch语句中定义一个变量的三种情况
a)可以在default中定义;b)可以在最后一个case中定义;c)在某个特殊的定义变量,引入块语句,块语句中是个单独的变量域。

  1. 范围for语句
vector<int> v = {0,1,2};
for (auto &r:v)
	r*=2;

for (auto beg = v.begin(),end=v.end();beg != end;++beg){
	auto &r = *beg;
	r *= 2;
}
  1. 标准异常
    自己定义异常类型
struct MyException : public exception
{
    const char* what () const throw ()//第二个const指这是个常函数,throw()说明可以不抛出异常,throw(type)会抛出type异常,throw(...)可能是任何类型的异常
    {
        return "C++ Exception";
    }
};

常函数含义是函数体的代码不能修改实参的值,但是可以修改形参的值。常函数可以被其他成员函数调用,但是不能调用其他非常函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值