这种复制构造函数的实现有一些缺点吗?
Foo::Foo(const Foo& i_foo)
{
*this = i_foo;
}
我记得,在一些书中建议从赋值运算符调用复制构造函数并使用众所周知的交换技巧,但我不记得为什么......
是的,这是一个坏主意。所有用户定义类型的成员变量都会首先被初始化,然后立即被覆盖。
交换技巧是这样的:
Foo& operator=(Foo rhs) // note the copying
{
rhs.swap(*this); //swap our internals with the copy of rhs
return *this;
} // rhs, now containing our old internals, will be deleted
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)