关于复制构造函数,临时对象的概念。想的头疼。
我的为难题是关于构造函数,和临时对象的。搞的我很晕啊。
class mm
{
};
int main()
{
//..............................................................................
mm c;
mm c7=mm(c);
//.............................................................................
mm c6;
c6= c.max(c,c1);
//..............................................................................
return 0;
}
上面两句会首先调用复制构造函数,理解。
mm::mm(const mm & st)
{
this->a=st.a;
..............
return this;
}
我理解返回的this 就是c7.就是说c7调用函数则。对吗?就是说直接把st的内容赋给c7了。这里用不到重载=号。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
const mm mm::max(const mm & v1,const mm &v2)
{
if(close>v2.close)
return v1;
else
return v2;
}
这里如果return v1.会调用复制构造函数,我知道在那三个地方会调用复制构造函数,但是不明白,返回的v1给谁了?c6= c.max(c,c1); 是给c了?原来理解是给了临时对象,但是现在越来越迷糊。
原来这样子理解return 掉用复制构造函数,产生了一个临时对象,比如这个临时对象叫kiss.于是有了kiss=mm(v1),然后在把kiss的值通过重载=传递给了c6.但是kiss在哪里?我怎么找不到它。调试的时候? 这个临时对象究竟是个什么玩意。是不是我理解的复杂了。
希望简练的帮我回答一下。谢谢。。
[解决办法]
编译器对这种情况是会优化的