复制构造函数
另一方面,复制构造函数与 Assignment Constructor 完全相反。这次,它用于初始化已经不存在的(或以前未初始化的)对象。这意味着它会复制你分配给它的对象的所有数据,而不会实际初始化要复制的对象。现在让我们看看与以前相同的代码,但将赋值构造函数修改为复制构造函数:
// Copy Constructor
#include <iostream>
#include <string>
using std::cout;
using std::endl;
class Foo
{
public:
Foo(int data)
{
this->data = data;
}
~Foo(){};
Foo(const Foo& rhs)
{
data = rhs.data;
}
int data;
};
int main()
{
Foo foo(2); //Foo(int data) called
Foo foo2 = foo; // Copy Constructor called
cout << foo2.data << endl;
}
你可以在主函数中看到 Foo foo2 = foo;
我在实际初始化之前立即分配对象,如前所述,这意味着它是一个复制构造函数。请注意,我不需要为 foo2
对象传递参数 int,因为我自动从对象 foo 中提取了以前的数据。这是一个示例输出: http : //cpp.sh/5iu7