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,赋值构造,析构临时变量


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


猜你喜欢

转载自blog.csdn.net/yunlianglinfeng/article/details/79718150
今日推荐