首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于复制构造函数,暂时对象的概念。想的头疼

2013-10-04 
关于复制构造函数,临时对象的概念。想的头疼。我的为难题是关于构造函数,和临时对象的。搞的我很晕啊。class m

关于复制构造函数,临时对象的概念。想的头疼。
我的为难题是关于构造函数,和临时对象的。搞的我很晕啊。
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在哪里?我怎么找不到它。调试的时候? 这个临时对象究竟是个什么玩意。是不是我理解的复杂了。

希望简练的帮我回答一下。谢谢。。
[解决办法]
编译器对这种情况是会优化的

热点排行