C++每日学习笔记DAY9

1.类型转换
    1.1 静态类型转换 static_cast
        1.1.1 语法为:static_cast<目标类型>(原对象)
        1.1.2 对于内置数据类型,可以实现转换的
        1.1.3 对于自定义数据类型,必须是父子之间的指针或者引用才能转换成功
    1.2 动态类型转换 dynamic_cast
        1.2.1 语法为: dynamic_cast<目标类型>(原对象)
        1.2.2 对于内置数据类型,不可以实现转换
        1.2.3 对于用户自定义数据类型
            1.2.3.1 父类转子类--不安全--转换失败
            1.2.3.2 子类转父类--安全的--转换成功
            1.2.3.3 如果发生多态那么上述两种都是安全的,都可以成功
    1.3 常量类型转换
        1.3.1 关键字为const_cast
        1.3.2 只能对指针、引用使用
    1.4 重新解释类型转换
         1.4.1 reinterpret_cast    
        1.4.2 不建议使用--不安全
2.异常的基本语法
    2.1 分别有三个关键字try、throw、catch
    2.2 try试图执行一段可能会出现异常的代码
    2.3 throw出现异常后会抛出异常的关键字:throw + 类型
    2.4 catch捕获某种类型异常:格式为catch(类型)
    2.5 其他类型异常捕获应为 catch(。。。)
    2.6 如果捕获到的异常不想处理想继续向上抛出用throw
    2.7 异常必须要有人处理,如果没有处理程序会自动调用terminate函数,使程序中断
    2.8 用户也可以抛出一个自定义类型的异常 例如 throw Preson()//Preson()是一个类的隐匿函数
3.栈解旋
    3.1 从try代码块开始起步,到throw抛出异常前面,所有栈上的对象都被释放掉,释放的顺序和构造的顺序是相反的。
        上述过程被称为---栈解旋
4.异常的接口声明
    4.1 如果只允许函数体中抛出某种类型的异常,可以使用异常的接口声明
    4.2 语法例如:void func()throw(类型A)//类型A异常的接口声明,如果throw(空)代表不允许抛出异常
5.异常变量的生命周期
    5.1 例如一个类A,则A e;语句会调用拷贝构造函数
    5.2 而A *a;指针方式,接收抛出 &A();匿名对象,该对象被释放掉,不可以再操作a了
    5.3 而A &a;引用方式,接收抛出;建议用这种方式,可以节省开销
    5.4 而A *a;指针方式,接收抛出 new A();堆区创建的对象,一定要记得手动释放 delete a
    5.5 建议使用--引用方式--接收对象
6.异常的多态使用
    6.1 提供一个基类A异常类,类内含有一个纯虚函数-virtual void func()=0;
    6.2 提供两个子类B和C继承异常类A,再重写父类A中的纯虚函数、
    6.3 进行测试,利用父类A引用去接收子类对象进而实现多态
    6.4 根据抛出的异常,进而调用出现异常中的func()函数打印异常信息
7.系统表中异常的使用
    7.1 使用之前要包含--标准异常头文件-:#include<stdexcpet>
    7.2 使用系统异常类: 例如out_of_range("char *")
    7.3 捕获异常语句:catch(A &a){cout << a.what();}
    7.4 每一个异常都有一个what()方法调用
8.文件读写操作
    8.1 读写头文件--fstream
    8.2 写--ofstream ofs
        8.2.1 ofs.open(),指定打开方式为:ios::out|ios::trunk
        8.2.2 再判断是否打开成功 ofs.is_open
        8.2.3 ofs<<"a"
        8.2.4 最后关闭流对象 ofs.close()
    8.3 读--ifstream ifs
        8.3.1 指定打开方式为:ios::in
        8.3.2 其次判断是否打开成功 ifs.open
        8.3.3 读取文件数据有三种方式可供选择
        8.3.4 关闭流对象 ifs.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值