【C++ 2.0-侯捷老师】Type Alias & noexcept & override & final

目录

 

1.Type Alias(类型别名)

2.using的用法总结

3.noexcept

3.1简单的看看noexcept的使用

3.2标准库中的会成长的函数在成长的时候需要将其设置为noexcept以便调用移动构造

4.override

5.final


1.Type Alias(类型别名)

2.using的用法总结

3.noexcept

3.1简单的看看noexcept的使用

继续往上抛异常都没有处理的话就会调用std::terminate,std::terminate则会调用std::abort,
程序无法执行下去.异常一定要处理,不然就会一直往源头跑,如果都不处理的话跑着跑着程序就要挂掉了.
这种一直往源调用函数跑的过程就是stack unwinding.
When program run, each function(data, registers, program counter, etc) is mapped onto 
the stack as it is called. Because the function calls other functions, they too are 
mapped onto the stack. This is stack winding.
Unwinding is the removal of the functions from the stack in the reverse order.


每次函数调用发生的时候,都会执行保护现场寄存器、参数压栈、为被调用的函数创建堆栈这几个对堆栈的操
作,它们都使堆栈增长.每次函数返回则是恢复现场,使堆栈减小.我们把函数返回过程中恢复现场的过程称为
unwinding stack.

stack unwinding的介绍链接

抛出异常与栈展开(stack unwinding)的延伸阅读

3.2标准库中的会成长的函数在成长的时候需要将其设置为noexcept以便调用移动构造

实际上只有vector会大幅度的痛苦成长,deque的成长是不痛苦的.

问题:不抛异常但是没有成功怎么办呢??

4.override

应用在继承上,父类有个虚函数,子类想要重写,结果写错了函数,就不是override
而是一个新函数了,傻傻的编译器并不知道你想要的干啥.但是子类中如何你在函数后面标明
了override,就告诉编译器你要做的是重写父类的虚函数,这时候编译器就会帮你检查了,
看看是不是写错了.

5.final

用法1:修饰class,告诉编译器,它不可以被继承了;
用法2:修饰虚函数,告诉编译器,这个虚函数不可以被复写(类是否可以被继承不受此处这个final影响).

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值