华东师范大学数学科学学院 目录页 School of Mathematical Sciences,ECNU Contents 1 类的组合 2 结构体与联合体 对象生存期 4 友元关系 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 目录页 Contents 华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU http://math.ecnu.edu.cn/~jypan 1 2 类的组合 结构体与联合体 3 对象生存期 4 友元关系
类的组合一组合类 ■ 什么是组合类 ■组合类的初始化 ■常量和引用的初始化 前向引用声明 http://math.ecnu.edu.cn/~jypan 3
http://math.ecnu.edu.cn/~jypan 3 类的组合 — 组合类 什么是组合类 组合类的初始化 常量和引用的初始化 前向引用声明 1
类的组合 类的组合/聚合: 将已有的类的对象作为新的类的成员。 Example class Point /声明Point类 { public: 。。。。。。 private: double×,y }; class Line /声明Line类 public: 。。·。·0 private: Point p1,p2; } http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 4 类的组合 类的组合/聚合: 将已有的类的对象作为新的类的成员。 class Point // 声明Point类 { public: ... ... private: double x, y; }; class Line // 声明Line类 { public: ... ... private: Point p1, p2; }; Example
组合类的初始化 在创建类的对象时,如果这个类包含其它类的对象(称为内嵌 对象成员),则各个内嵌对象将首先被自动创建。 组合类初始化: 内嵌对象成员初始化+普通数据成员初始化。 http://math.ecnu.edu.cn/~jypan 5
http://math.ecnu.edu.cn/~jypan 5 组合类的初始化 在创建类的对象时,如果这个类包含其它类的对象(称为内嵌 对象成员),则各个内嵌对象将首先被自动创建。 组合类初始化: 内嵌对象成员初始化 + 普通数据成员初始化
组合类的初始化 类名:类名(总的参数列表)内嵌对象1(参数),内嵌对象2(参数),· {类的数据成员的初始化;} 初始化列表:对内嵌对象进行初始化。 ·这里的“参数”前面不用加数据类型: ·初始化列表最前面有个冒号。 ·除了自身的构造函数外,内嵌对象的构造函数也被调用 ●构造函数调用顺序: 一按内嵌对象在组合类定义中出现的顺序依次调用内嵌数对象的构造函数 一最后调用本类的构造函数 ·析构函数的调用顺序与构造函数相反 http://math.ecnu.edu.cn/~jypan 6
http://math.ecnu.edu.cn/~jypan 6 组合类的初始化 类名::类名(总的参数列表) : 内嵌对象1(参数), 内嵌对象2(参数), ... {类的数据成员的初始化; } 初始化列表:对内嵌对象进行初始化。 ► 这里的“参数”前面不用加数据类型; ► 初始化列表最前面有个冒号。 除了自身的构造函数外,内嵌对象的构造函数也被调用 构造函数调用顺序: — 按内嵌对象在组合类定义中出现的顺序依次调用内嵌对象的构造函数 — 最后调用本类的构造函数 析构函数的调用顺序与构造函数相反