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,即空指针。该操作符的用途是,使得能够在类层次结构中进行向上转换,而不允许其他转换。
用于执行只有一种用途的类型转换,即改变值为const或volatile。也就是说,除了const或volatile特征(有或无)可以不同外,type-name和expression的类型必须相同。如果Low是High的可访问基类:
提供该操作符的原因是,有时候可能需要这样一个值,它在大多数时候是常量,而有时又是可以修改的。这样,可以将这个值声明为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