C++ 构造函数笔记

class base
{
public:
base()
{
cout << "normal construct :"<<this << endl;
}
base(base &b)
{
cout << "copy construct this:"<<this<<"  src:"<<&b << endl;
a = b.a;
}


base & operator = (const base &b)
{
cout << "= construct" << endl;
a = b.a;
return *this;
}


~base()
{
cout << "~base():"<<this << endl;
}


int a;
};


base  testfun1()
{
base a;
cout << "a:"<<&a << endl;
return a;

}

base & testfun2()
{
base a;
cout << "a:"<<&a << endl;
return a;

}


base a;调用普通构造函数

base c;调用普通构造函数

base b = a;调用拷贝构造函数

c = a;调用赋值构造函数

testfun1();调用普通构造a、拷贝构造、析构a,析构临时对象

testfun2();调用普通构造a,析构a

base d = testfun1();调用普通构造a、拷贝构造,析构a,临时对象被d接走,函数返回没有调用析构

base &d = testfun1();调用普通构造a,拷贝构造,析构a,临时对象被d接走,函数返回没有调用析构

base d = testfun2();调用普通构造a,析构a,拷贝构造函数

base &d = testfun2();调用普通构造a,析构a

d = testfun2();调用普通构造a,析构a,调用赋值构造函数

d = testfun1();调用普通构造a,拷贝构造,析构a,赋值构造,析构临时变量


函数返回引用,主要功能是避免临时变量生成(调用拷贝构造函数)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值