在C++中,如何在不复制代码的情况下,给类复制构造函数和赋值操作符相同的功能。

in C++, How can I give a class copy constructor and assignment operator the same functionality without making duplicate code

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
What is the copy-and-swap idiom?
Copy constructor and = operator overload in C++: is a common function possible?

有没有一种方法可以让复制构造函数和赋值运算符的主体包含相同的代码,而实际上没有重复的代码(函数头除外)?


一种常见的方法是复制和交换习语。您必须实现一个交换操作,但是如果正确地完成了,您就有了异常安全分配的额外好处。


创建函数

1
2
3
4
    init(various parameters you need){
...
//common initializing process
}

然后从所有构造函数、复制和赋值运算符调用此函数


将功能放在一个单独的方法中,然后从复制构造函数和赋值运算符代码中调用它。

或者,您可以从复制构造函数调用赋值运算符。