C++基础 匿名对象

匿名对象的构造与使用

以下几种情况又会匿名对象

(1)对象构造 与 匿名对象

Test t1 = Test();

这时,Test()会构造匿名对象,并且是调用无参构造函数,然后 t1 将匿名对象扶正。

(2)对象赋值 与 匿名对象

Test t1(1,2);
t1 = Test(2,3);

Test(2,3),调用有参构造函数,构造匿名对象,然后调用赋值函数,最后匿名对象析构。

(3)函数返回 与 匿名对象

Test func()
{
   Test t1(1,2);
   return t1;
}

main()
{
    Test test1 = func();
    Test test2;
    test2 = func();
}

  t1返回时,使用拷贝构造函数构造匿名对象,由于test1是构造,所以匿名对象不会析构,而test2赋值后,匿名对象会析构。

(4)构造函数中调用构造函数

class Test {
private:
   int _a, _b;
public:
   Test(int a, int b)
   {
       _a = a;
       _b = b;
       Test(1, 2);
   }
}

main()
{
     Test(3, 4);
}

  结果是,_a=3,_b=4。Test(1,2)这里会构造出一个匿名对象,然后马上析构。

转载于:https://www.cnblogs.com/yangxinrui/p/9820711.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值