一、对象组合的方式
1.Fully 一个类中含有其他类的对象(即:内嵌对象)
2.By Reference 通过指针指向其他类的对象
(具体中文翻译的名字,我没去查;我觉得这里的英文更方便理解和记忆)
二、代码实例
class A {...};
class B {...};
class C {
public:
C (int m, float n, char s);
~C();
void print ();
private:
A aa;//内嵌对象
B bb;//内嵌对象
};
构造函数的调用:
C::C (int m, float n, char s) : aa(m,n), bb(s) {}
//重点哈!!!
//关于这里为何要这样初始化,我会在后面解释
void C::print () {
aa.print();
bb.print();
}
三、初始化对象和对对象赋值
Student::Student (String s) : name(s) {};
//这一个程序指令已经完成对象的初始化
//用 s 去给name这个数据成员进行初始化
Student::Student (string s) { name = s};
//这一个程序指令完成了两件事,初始化和赋值
//在程序未进入{}里时,利用无参的默认构造函数进行初始化;之后,对name进行赋值
//如果并未声明默认构造函数,就会报错(编译器找不到默认构造函数进行初始化,就GG了)
(注,编译器给出的错误信息,初学者可能一时半会想不到是因为这个。。保险起见,用第一种)