3.7 类对象作为成员.ppt
文本预览下载声明
3.7 类对象作为成员 3.7 类对象作为成员 类中的数据成员除了是基本的数据类型外,还可以是其他类的对象,称为对象成员。 使用对象成员要注意的问题是构造函数的定义方式,及对象成员的初始化问题。 3.7 类对象作为成员 设有类定义: class T{ 类A a; 类B b; …… 类N n; …… public: T(参数表0):a(参数表1),b(参数表2),……,n(参数表n){函数体} }; 3.7 类对象作为成员 例3-7-1:字符串类对象作为girl类的名字数据成员 class string{ char *str; public: string(char *s){ str=new char[strlen(s)+1]; strcpy(str,s); coutconstructed string.endl;} void print() { coutstrendl; } ~string(){ delete []str; coutdestructed string.endl;} }; 3.7 类对象作为成员 class girl{ string name; int age; public: girl(char *n,int a):name(n) {age=a;coutconstructed girl.endl;} void print(){ name.print(); coutage:ageendl;} ~girl(){ coutdestructed girl.endl; } }; 3.7 类对象作为成员 运行结果: constructed string. constructed girl. Rose age:20 destructed girl. destructed string. 3.7 类对象作为成员 上一节 上一页 下一页 下一节 * 调用构造函数T时,先按照各对象在初始化表中的顺序依次调用类A、类B、……、类N的构造函数,最后执行T的函数体。析构函数的调用顺序正好相反。 main(){ girl g(Rose,20); g.print(); return 0;} girl(char *n,int a):name(n) {age=a; coutconstructed girl.endl;} string(char *s) { str=new char[strlen(s)+1]; strcpy(str,s); coutconstructed string.endl;} void print() { name.print(); // void string::print() { coutstrendl; } coutage:ageendl;} ~girl(){ coutdestructed girl.endl;} ~string() { delete []str; coutdestructed string.endl;}
显示全部