1类型转换调用方法double d = static_cast(a);
static_cast使用 static_cast<目标类型>(原始对象)
2动态转换dynamic_cast
3.不可转换基础数据类型,父子之间可以转换,父转子 不可以 子转父可以
2异常
1.try试图执行try{}中的内容
2.在可能出现异常的地方抛出异常throw
3.try下面catch捕获异常
4.catch成功捕获类型 …代表所有其他类型
5如果不想处理异常,继续向上抛出throw
6.如果没有任何处理异常的地方,那么成员调用terminate函数,中断异常
7.自定义异常类,可以抛出自定义的对象,捕获自定义的异常
3栈解旋
1.从try开始,到throw抛出异常之前 所有栈上的对象 都会被释放 这个过程称为栈解旋
2栈上的构造顺序与析构顺序相反
4接口声明
1 如果想抛出特定的类型异常,可以利用异常的接口声明
2.void func() throw(int )//throw只能
5异常变量生命周期
1 如果MyException e,会多开销一份数据,调用拷贝构造
2. 如果MyException *e ,不new提前释放对象new自己管理delete
3. 推荐MyException &e容易些 而且 就一份数据
6异常的多态使用
1 利用多态来实现printError同一个接口调用
2 抛出不同的对象提示不同的错误
7 使用系统的标准异常
1 #include
2. throw out_of_range(“aaa”)…
3. catch(out_of_range & e) e.whai();
8 编写自己的异常类
1.自己的异常类 需要继承于exception
2.重写虚析构 what()
3.内部维护以错误信息字符串
4.构造时候传入 错误信息字符串,what返回这个字符串
5 string转char* .c_str();