当其他类对象作为本类成员,构造的时候先构造类对象,再构造自身
析构的时候,先析构自身,再析构类对象
特别需要注意的是:当采用初始化列表的方式构造函数时,赋值方式采用的是隐式法:
如果传的参数是phone类型的:
隐式法:m_persion_phone=persion_phone
显示法:m_persion_phone=phone(persion_phone)
如果传参数是分开传的形式的话(类对象含有多个变量)
隐式法:m_persion_phone=phone_name, phone_price
显示法:m_persion_phone=phone(phone_name, phone_price)
#include <iostream>
using namespace std;
class phone
{
private:
string m_phone_name;
float m_price;
public:
phone(string phone_name, float price)
{
//cout << "phone有参构造函数" << endl;
m_phone_name = phone_name;
m_price = price;
}
string get_phone_name()
{
return m_phone_name;
}
float get_phone_price()
{
return m_price;
}
~phone()
{
//cout << "phone析构函数" << endl;
}
};
class persion
{
public:
string m_name;
int m_age;
phone m_persion_phonee;
public:
//构造函数-初始化列表
//persion(string name, int age, phone persion_phone) :m_name(name), m_age(age), m_persion_phonee(persion_phone)
//{
// //cout << "persion构造函数" << endl;
//}
//隐式法 m_persion_phone=
persion(string name, int age, string phone_name, float price) :m_name(name), m_age(age), m_persion_phonee(phone_name, price)
{
//cout << "persion构造函数" << endl;
}
~persion()
{
//cout << "persion析构函数" << endl;
}
};
void test()
{
//phone phone1("XIAOMI", 3999.99f);
//persion persion1("Zhang san", 20, phone1);
persion persion1("Zhang san", 20, "XIAOMI", 3999.99f);
//cout << "年龄为" << persion1.m_age << "的" << persion1.m_name << "拿着价值" << phone1.get_phone_price() << "的" << phone1.get_phone_name() << endl;
cout << "年龄为" << persion1.m_age << "的" << persion1.m_name << "拿着价值" << persion1.m_persion_phonee.get_phone_price() << "的" << persion1.m_persion_phonee.get_phone_name() << endl;
}
int main()
{
test();
system("pause");
return 0;
}