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块来接收,程序最终会调用terminateterminate里面会调用abort退出程序

可以使用set——terminate来替换默认的terminate函数,自己写的函数一定要调用abort或者exit

异常处理不会对类型进行隐式转化,类型要求严格匹配

Try catch 可以嵌套,try抛出 异常,会被自己的catch块接收,如果内部try块中没有异常处理,没有被接受,会一层一层往外找catch块接收

异常使用...来接受所有异常,但无法分辨

 

异常与对象

Try中的对象在碰到异常的时候会被析构

构造中抛出异常,不会被调用析构

析构不能抛出异常

Noexcept

关键字承诺不抛出异常,如果抛出不会被接受。

posted @ 2020-09-04 11:13  特权E5  阅读(240)  评论(0编辑  收藏  举报