C++中的临时对象

第一点:直接开门见上的告诉大家在C++中直接调用构造函数将会产生一个临时对象

什么是临时对象,临时对象的特点有哪些?

1.临时对象的生命周期只有一条语句的时间,也就是一行代码的时间

2.临时对象的作用域只在一条语句中

3.临时对象是C++中值得警惕的灰色地带

4.被const 引用作用的对象,它产生的临时对象生命周期将会延长(后面给出验证)

好直接上代码验证上面说说的,

#include <stdio.h>

class Test
{
    private:
       int mi;
    public:
       Test(int v)
       {
           mi=v;
           printf("Test(int v) mi=%d\n",mi);
           
       }
       Test()
       {
          printf("Test()\n");
       }
       
       ~Test()
       {
          printf("~Test()\n");
       }
};


int main()
{
    printf("main begin...\n");
    
    Test t1(1);
    //Test(1);
    
    printf("main end....\n");
    
    return 0;
}



//输出结果为:
main begin...
Test(int v) mi=1
main end....
~Test()
//结果分析,相信这个结果是很正常的,先调用构造函数,然后在return 0;返回之前在调用对象的析构函数。


//接下来直接看调用构造函数产生的结果为什么?
#include <stdio.h>

class Test
{
    private:
       int mi;
    public:
       Test(int v)
       {
           mi=v;
           printf("Test(int v) mi=%d\n",mi);
           
       }
       Test()
       {
          printf("Test()\n");
       }
       
       ~Test()
       {
          printf("~Test()\n");
       }
};


int main()
{
    printf("main begin...\n");
    
    //Test t1(1);
    Test(1);
    
    printf("main end....\n");
    
    return 0;
}

//输出结果为:
main begin...
Test(int v) mi=1
~Test()
main end....

//结果分析 发现最后徐才打印出 main end...这句话,说明 直接调用构造函数 Test(1) 产生一个临时对象,临时对象的生命周期只有一行代码,刚刚构造完,然后就析构了。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

repinkply

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值