鱼C论坛

 找回密码
 立即注册
查看: 1228|回复: 1

[已解决]这个代码的生成结果是什么,为什么是这样的顺序和结果

[复制链接]
发表于 2023-11-9 20:36:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;
}
最佳答案
2023-11-9 20:37:10
生成结果是:
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的析构函数调用"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-9 20:37:10 | 显示全部楼层    本楼为最佳答案   
生成结果是:
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的析构函数调用"。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 05:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表