这个代码的生成结果是什么,为什么是这样的顺序和结果
#include<iostream >using namespace std;
class person
{
public:
person()//无参构造,也称为默认构造
{
cout << "person的构造函数调用" << endl;
}
person(int a)//有参构造
{
int age = a;
cout << "age is"<<a << endl;
}
~person()
{
cout << "person的析构函数调用" << endl;
}
//拷贝构造函数
person(const person& p)
{
int age=0;
cout << "拷贝构造函数的调用" << endl;
}
};
//调用默认构造函数的时候,不要用小括号。
//调用的方式
void test01()
{
//括号法
person p1(10);
//显示法
person p2 = person(10);
//隐式转化法
}
int main()
{
test01();
return 0;
} 生成结果是:
person的构造函数调用
age is 10
person的析构函数调用
person的构造函数调用
age is 10
person的析构函数调用
原因是:
1. 首先,调用test01函数。
2. 在test01函数中,使用括号法创建了一个person对象p1,并传入参数10。这会调用有参构造函数,输出"age is 10"。
3. person对象p1的作用域结束,所以调用了析构函数,输出"person的析构函数调用"。
4. 然后,使用显示法创建了一个person对象p2,并传入参数10。这也会调用有参构造函数,输出"age is 10"。
5. person对象p2的作用域结束,所以调用了析构函数,输出"person的析构函数调用"。
因此,代码的生成结果是先输出"person的构造函数调用",然后输出"age is 10",最后输出"person的析构函数调用"。
页:
[1]