下面的写法是错误的,初始化的仅仅是一个临时对象,而不是person对象。
#include <iostream>
using namespace std;
struct Person
{
int m_age;
int m_height;
Person()
{
Person(10, 20); // 创建了一个临时对象
}
Person(int age, int height)
{
m_age = age;
m_height = height;
}
};
int main()
{
Person person;
cout << person.m_age << endl;
cout << person.m_height << endl;
return 0;
}
输出结果如下:
汇编代码如下:
构造函数的互相调用只能放在初始化列表中。
#include <iostream>
using namespace std;
struct Person
{
int m_age;
int m_height;
Person() : Person(10, 20)
{
}
Person(int age, int height)
{
m_age = age;
m_height = height;
}
};
int main()
{
Person person;
cout << person.m_age << endl;
cout << person.m_height << endl;
return 0;
}