C++PrimerPlus 第十五章 友元、异常和其他

1、如果将类B定义为类A的友元类,则在类A的声明中,添加语句friend class B;即可,这样一来,B就可以访问A中的私有成员和保护成员。

2、可以仅让特定的类成员成为另一个类的友元,而不必让整个类成为友元,但这样做稍微有点麻烦,必须小心排列各种声明和定义的顺序。

3、在C++中,可以把使用类声明放在另一个类中,在另一类中声明的类被称为嵌套类。 对类进行嵌套与包含并不相同,包含意味着将类对象作为另一个类的成员,而对类进行嵌套不创建类成员,而是定义一种类型,该类型仅在包含嵌套类声明的类中有效。

4、异常的处理有3个组成部分:

      1)引发异常     2)使用处理程序捕获异常     3)使用try块

     执行throw语句类似于执行返回语句,因为它也将终止函数的执行 ;但是throw不是将控制权返回给调用程序,而是导致程序沿函数调用序列后退,知道找到包含try的函数。执行throw语句后,发生throw的函数在栈中将被删除。

5、如果函数引发异常,而没有try块或没有匹配的处理程序时,将会发生什么情况?在默认情况下,程序最终将调用abort()函数。

6、假设有一个异常类层次结构, 并要分别处理不同的异常类型,则使用基类引用将能够捕获任何异常对象;而派生类对象只能捕获它所属类派生而来的类的对象。如果有一个异常类继承层次结构,应该这样排列catch块;将捕获位于层次结构最下面的异常类的catch语句放在最前面,将捕获基类异常的catch语句放在最后面。有的时候不知道异常的类型,可以使用省略号表示任何异常。

7、C++提供四种类型转换运算符 dynamic_cast,const_cast,static_cast,reinterpret_cast.

const_cast只能用来修改 数据的const或volatile属性,不能进行其他的修改

子类指针或引用 无法隐士的转换成基类的指针或引用。但是可以通过static_cast运算符实现,尽管如此,也是不安全的。可以使用static_cast将double转换为int,将float转换为long以及其他各种数值转换。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值