欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++类的组合和前向引用声明

程序员文章站 2022-05-03 18:05:36
类的组合   c++类的组合和前向引用声明。类的组合描述的就是一个类内嵌其他类的对象作为成员的情况,它们之间的关系是一种包含与被包含的关系。当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌...

类的组合

  c++类的组合和前向引用声明。类的组合描述的就是一个类内嵌其他类的对象作为成员的情况,它们之间的关系是一种包含与被包含的关系。当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将首先被自动创建。因此,在创建对象时既要对本类的基本类型数据成员进行初始化,又要对内嵌对象成员进行初始化。

  在创建一个组合类的对象时,不仅它自身的构造函数的函数体将被执行,而且还将调用其内嵌对象的构造函数,这时构造函数的调用顺序如下:

  1.调用内嵌对象的构造函数,调用顺序按照内嵌对象在组合类的定义中出现的次序。与在构造函数的初始化列表中出现的顺序无关。

  2.执行本类的构造函数

  如果有些内嵌对象没有出现在构造函数的初始化列表中,那么在第一步中,该内嵌对象的默认构造函数将被执行。

  有些数据成员的初始化,必须在构造函数的初始化列表中进行。这些数据成员包括两类,一是那些没有默认构造函数的内嵌对象,因为这类对象的初始化时必须提供参数,另一类是引用类型的数据成员,因为引用类型变量必须在初始化时绑定引用的对象。如果一个类包括这两类成员,你们编译器不能够为这个类提供隐含的默认构造函数,这时必须编写显示的构造函数,并且在每个构造函数的初始化列表中至少为这两类数据成员初始化。

  析构函数的调用顺序与构造函数的调用顺序相反。

  如果一个类没有编写复制构造函数,编译会在必要时自动生成一个隐含的复制构造函数,这个隐含的函数会自动调用内嵌对象的复制构造函数,为各个内嵌对象初始化。

 

前向引用声明

  前向引用声明,是在引用未定义之前,将该类的名字告诉编译器,使编译器知道那是一个类名。

  在提供一个完整的类定义之前,不能定义该类的对象,也不能在内联成员函数中使用该类的对象。可以声明该类的对象引用或指针。

  在使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节。