在 C++ 中,值的拷貝構造函數是一種特殊的構造函數,它用于通過已存在的對象來初始化新對象。當以下情況發生時,將調用拷貝構造函數:
class MyClass {
public:
MyClass() {} // 默認構造函數
MyClass(const MyClass& other) {} // 拷貝構造函數
};
MyClass obj1;
MyClass obj2 = obj1; // 調用拷貝構造函數
void myFunction(MyClass obj) {
// 函數實現
}
MyClass obj1;
myFunction(obj1); // 調用拷貝構造函數
MyClass myFunction() {
MyClass obj;
return obj; // 調用拷貝構造函數
}
MyClass obj1 = myFunction(); // 調用拷貝構造函數
拷貝構造函數的工作原理是創建一個新對象,并將現有對象的所有成員變量復制到新對象中。這樣,新對象就具有與現有對象相同的狀態。拷貝構造函數的基本形式如下:
class ClassName {
public:
ClassName(const ClassName& other) {
// 復制 other 對象的成員變量到新對象
}
};
請注意,拷貝構造函數應該接受一個常量引用參數(const ClassName&),以避免不必要的拷貝操作。此外,拷貝構造函數應該確保正確地復制對象的所有成員變量,包括動態分配的內存。