对象成员也称为类的聚集,指在类的定义中数据成员可以为其他的类的对象,即类对象作为另一个类的数据成员。
如果在类定义中包含有对象成员,则在创建类对象时先调用对象成员的构造函数,再调用类本身的构造函数。析构函数与构造函数的调用顺序正好相反。
例1:含有对象成员的类的构造函数和析构函数的调用顺序
Rusult:
Assignment student id 9901
Constructing student wang
Assignment student id 0
Constructing student li
Deconstructing student li
Destruting id 0
Deconstructing student wang
Destruting id 9901
#include<iostream>
#include<string.h>
class studentID{
public:
StudentID(int id=0) //带默认参数的构造函数
{
value=id;
cout<<"Assignment student id"<<value<<endl;
}
~StudentID()
{
cout<<"Destruting id"<<value<<endl;
}
private:
int value;
};
class Student{
public:
Student(char* pName="no name",int ssID=0):id(ssID)
{
cout<<"Constructing student"<<pName<<endl;
strncpy(name,pName,sizeof(name));
//strncpy(s1,s2,n); 作用是将字符串s2复制到字符串s1中,但最多复制n个字符
name[sizeof(name)-1]='\0';
}
~Student()
{cout<<"Deconstructing student"<<name<<endl;}
protected:
char name[20];
StudentID id; //对象成员
};
void main()
{
Student s("wang",9901);
Student t("li");
}