c++智能指针 及异常简介
Shared_ptr
包含头文件memory c++智能指针,强指针
Shared_ptr<CA> ptr(new CA)
Shared_ptr<CB> ptr(new CB)
Shared_ptr<CA> ptrA0 = ptrA;
Int nVal = ptrA->GetVal();
nVal = ptrB->GetVal();
循环引用
循环引用会带来内存泄漏,如果程序确定会出现循环引用使用弱指针,否则一般情况不用
异常
宜昌市意料之外的情况
C++异常处理使得错误的发现错误处理分开
c++异常处理使用 try catch throw 关键字可可能抛出异常的代码放到try语句块里面,使用catch 来接受try里面抛出的异常,使用throw 来抛出异常
throw可以抛出所以类型的对象包括类对象
当throw语句执行后,程序执行流程跳出try语句块,转向catch语句块查找类型匹配的catch语句块并执行
如果一个异常被抛出,但是没有catch块来接收,程序最终会调用terminate,terminate里面会调用abort退出程序
可以使用set——terminate来替换默认的terminate函数,自己写的函数一定要调用abort或者exit
异常处理不会对类型进行隐式转化,类型要求严格匹配
Try catch 可以嵌套,try抛出 异常,会被自己的catch块接收,如果内部try块中没有异常处理,没有被接受,会一层一层往外找catch块接收
异常使用...来接受所有异常,但无法分辨
异常与对象
Try中的对象在碰到异常的时候会被析构
构造中抛出异常,不会被调用析构
析构不能抛出异常
Noexcept
关键字承诺不抛出异常,如果抛出不会被接受。
学如逆水行舟,不进则退。
博客园技术交流群 群 号:1073255314
(本群没人,刚刚建立 -_-!!! )