- 即使两个类的成员列表完全一致,它们也是不同的类型
- 可以把类名作为类型的名字使用或者把类名跟关键字class或struct后面。
不完全类型: 类在声明之后定义之前。
- 可以定义指向这种类型的指针或引用
- 可以声明(但不能定义)以不完全类型作为参数或者返回类型的函数
前向声明: Class Screen;(只声明不定义)
- 在我们创建类的对象之前该类必须被定义过,而不能仅仅被声明,否则编译器就无法了解这样的对象需要多少存储空间。
- 类必须被定义才能引用或者指针访问其成员
一旦一个类的名字出现后,它就被认为是声明过来了,因此允许类包含指向它自身的引用或指针。 友元 类之间的友元关系
在A类中使用friend 关键声明B类。则B类的成员 函数可以访问A类包括非公有在内的所有成员。
友元关系不存在传递性,每个类负责控制自己的友元类或者友元函数
列:A类中声明的B类的B1友元成员函数
令成员函数作为友元必须如下方式设计程序
- 首先定义B类,声明B1函数,但是不能定义,在B1函数使用A类中成员之前必须先声明A类
- 接下来定义A类,包括对于B1的友元声明
- 最后定义B1函数,此时它才可以使用A类中成员
- 当一个名字第一次出现在友元声明中时,我们隐式的假定该名字在当前作用域是可见的。
- 就算在类的内部定义友元函数,我们也必须在类的外部提供想要的声明从而使得函数可见。(换句话说,即使我们仅仅是用声明友元的类的成员调用该友元函数,它也必须是声明过的)



