首页 > 代码库 > 复制拷贝函数+重载operator=
复制拷贝函数+重载operator=
首先,如下写法:
Class A = B;Class A;A = B;
并不等价,前者等价于A(B),后者等价于A.operator=(B)
问题源于我想要用类似如下写法完成复制拷贝函数
Class(Class &t) { *this = t;}
尝试重载operator=,由于写挂了,或者说是return错误的对象,导致死循环或者编译不通过
1.死循环:
关键在于对复制拷贝函数的理解(什么时候会调用),如果函数的形参不是引用,或者return一个非引用的对象,
就会调用复制拷贝函数,而我的复制拷贝函数又会调用operator=,这样陷入死循环
2.编译不通过
operator= return的对象,应当是引用,避免调用复制拷贝函数,而这个引用应该是引用对象本身*this,而非传入的const引用
写得也挺乱的,主要是几小时前的问题了,还是要具体的问题具体分析,但是限于本人比较懒,所以列出参考.
1.Class A = B;是个什么意思:http://stackoverflow.com/questions/2462773/c-copy-construct-construct-and-assign-question
2.拷贝构造函数详解:http://blog.csdn.net/lwbeyond/article/details/6202256
3.一个例子加强理解: http://bbs.csdn.net/topics/40006610
复制拷贝函数+重载operator=
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。