隐式构造的临时对象
class A
{
public:
A(int a) //构造
:_a(a)
{ }
A(A &src) //拷贝构造
{
_a = src._a;
}
operator=(A &src)
{
}
private:
int _a;
}
隐式构造------常量
A a1;
a1 = 10; //先调用构造方法产生一个值为10的临时对象(常对象),不可更改。
会泄漏临时对象的引用给等号运算符重载(等号运算符参数类型列表的引用是常引用)。
A a(10); //构造。
A a1(a); //拷贝构造。
A a2 = 10; //用10拷贝构造a2。字面含义:构造临时对象、拷贝构造、析构临时——优化
a2 = 10; //构造临时对象、等号运算符重载、析构临时对象。
A fun(A &a)
{
a = 10; //构造临时对象10,等号运算符重载,析构10。
return a; //拷贝构造临时量(1)
}
A b = fun(a); //拷贝构造生成b,析构临时量(1)。
构造的对象是要压栈保存的,压栈先进后出,后进先出。如果是:通过new或malloc分配的就是在堆上了,那样析构的顺序就由你自己调用delete或free决定了