第15章 友元、异常和其他

1.友元类

      友元类的所有方法都可以访问原始类的私有成员和保护成员。友元声明可以位于公有、私有或保护部分,其所在的位置无关紧要。下面的例子是一个电视机Tv类和它的友元类Remote类。由于后者提到了前者,所以编译器必须了解Tv类后,才能处理Remote类,为此,最简单的方法是首先定义Tv类。另一种方法是,可以使用前向声明(forward declaration),这将在后面介绍。

2.友元成员函数

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091023/1.jpg

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091026/2.jpg

3.互为友元类

 https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091026/3.jpg

4.函数同时为两个类的友元

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091026/4.jpg

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091026/5.jpg

5.嵌套类

      嵌套类的作用域:

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091026/6.jpg

      模板中的嵌套例子:

6.类型转换操作符

     如果指向的对象(*pt)的类型为Type或者是从Type直接或间接派生而来的类型,则表达式dynamic_cast<Type *>(pt)将指针pt转换为Type类型的指针;否则,结果为0,即空指针。该操作符的用途是,使得能够在类层次结构中进行向上转换,而不允许其他转换。

 

用于执行只有一种用途的类型转换,即改变值为constvolatile。也就是说,除了constvolatile特征(有或无)可以不同外,type-nameexpression的类型必须相同。如果LowHigh的可访问基类:

提供该操作符的原因是,有时候可能需要这样一个值,它在大多数时候是常量,而有时又是可以修改的。这样,可以将这个值声明为const,在需要修改它的时候,使用const_cast,这也可以通过通用类型转换来实现,但用const_cast更安全。const_cast不是万能的,它可以修改指向一个值的指针,但修改const值的结果是不确定的。333

 

 https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091026/7.jpg

 

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20091026/8.jpg

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值