複製建構函式
另一方面,複製建構函式與 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