如果一个类中含对象成员。当创建这个类的对象时,C++编译器必须确保调用了所有子对象的构造函数。如果所有的子对象有默认构造,那么编译器会自动调用默认构造。如果子对象没有默认构造,亦或者想指定调用某个构造函数时,就必须用初始化列表。
class car
{
public:
string name;
car()
{
cout << "car 无参构造" << endl;
}
car(string name)
{
this->name = name;
cout << "car有参构造" << endl;
}
};
class person
{
public:
string person_name;
car mycar;
person(string name)
{
person_name = name;
cout << "person(string name)" << endl;
}
person(string people_name, string carname) :mycar(carname), person_name(people_name)//使用初始化列表,可以指定调用构造函数
{
cout << "person(string people_name,string carname)" << endl;
}
void gotowork()
{
cout << "people:" << person_name << " "<<"driving" << " " << mycar.name << endl;
}
};
void testperson()
{
person per("tom","benzi");
per.gotowork();
}