C++语言学习笔记:类的组合

        解决复杂问题的有效方法是将复杂问题层层分解为简单问题的组合,首先解决简单问题,较复杂问题也就迎刃而解了。

一、组合

  • 类的组合描述的是一个类内嵌其他类的对象作为成员的情况,它们之间的关系是一种包含与被包含的关系;
  • 当创建类的对象时,如果这个类具有内嵌对象成员,那么各个内嵌对象将被自动创建;
  • 在创建对象时既要对本类的基本类型数据成员进行初始化,又要对内嵌对象成员进行初始化;
  • 组合类构造函数定义的一般形式:
    类名 :: 类名(形参表) : 内嵌对象1(形参表1),内嵌对象2(形参表2), ...
  • 组合类构造函数的调用顺序:

(1)调用内嵌对象的构造函数,调用顺序按照内嵌对象在组合类的定义中出现的次序;

(2)执行本类构造函数的函数体;

  • 有些数据成员的初始化,必须在构造函数的初始化列表中进行,这些数据成员包括两类,一类是那些没有默认构造函数的内嵌对象,另一类是引用类型的数据成员;
  • 析构函数的调用执行顺序与构造函数刚好相反;
  • 如果要为组合类编写复制构造函数,则需要为内嵌成员对象的复制构造函数传递参数;
    假设C类中包含B类的对象b作为成员,C类的复制构造函数形式如下:
    C :: C(C &c1) : b(c1.b){...}

 二 、前向引用声明

  • 针对两个类相互引用的情况;
  • 前向引用声明,是在引用未定义的类之前,将该类的名字告诉编译器,使编译器知道那是一个类名;
  • 在提供一个完整的类定义之前,不能定义该类的对象,也不能在内联函数成员中使用该类的对象;
  • 经过前向引用声明,可以声明类的对象引用或指针;
  • 当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节;

你可能感兴趣的:(C++语言学习笔记,学习,笔记,c++)