C++ 構(gòu)造函數(shù)
構(gòu)造函數(shù)是 C++ 中一種特殊的成員函數(shù),當創(chuàng)建類對象時自動調(diào)用。它用于初始化對象的狀態(tài),例如為屬性分配初始值。構(gòu)造函數(shù)與類同名,且沒有返回值類型。
構(gòu)造函數(shù)類型
C++ 支持多種類型的構(gòu)造函數(shù),用于滿足不同的初始化需求:
- 默認構(gòu)造函數(shù): 不帶參數(shù)的構(gòu)造函數(shù),通常用于初始化對象的默認狀態(tài)。
- 帶參數(shù)構(gòu)造函數(shù): 允許傳入?yún)?shù)來初始化對象的狀態(tài)。
- 拷貝構(gòu)造函數(shù): 用于從另一個已存在的對象創(chuàng)建新對象。
- 移動構(gòu)造函數(shù): 用于從即將銷毀的臨時對象轉(zhuǎn)移資源到新對象。
默認構(gòu)造函數(shù)
默認構(gòu)造函數(shù)是最簡單的構(gòu)造函數(shù),不接受任何參數(shù)。它通常用于為對象的屬性設(shè)置默認值,或者執(zhí)行簡單的初始化操作。
class Person {
public:
string name;
int age;
Person() { // 默認構(gòu)造函數(shù)
name = "Unknown";
age = 0;
}
};
int main() {
Person p1; // 創(chuàng)建 Person 對象
cout << p1.name << ", " << p1.age << endl; // 輸出:Unknown, 0
return 0;
}
帶參數(shù)構(gòu)造函數(shù)
帶參數(shù)構(gòu)造函數(shù)允許傳入?yún)?shù)來初始化對象的狀態(tài)。參數(shù)可以是任何有效的 C++ 數(shù)據(jù)類型,包括基本類型、自定義類對象和指針。
class Car {
public:
string brand;
string model;
int year;
Car(string b, string m, int y) { // 帶參數(shù)構(gòu)造函數(shù)
brand = b;
model = m;
year = y;
}
};
int main() {
Car car1("Ford", "Mustang", 1967); // 創(chuàng)建 Car 對象并傳入?yún)?shù)
cout << car1.brand << " " << car1.model << " " << car1.year << endl; // 輸出:Ford Mustang 1967
return 0;
}
拷貝構(gòu)造函數(shù)
拷貝構(gòu)造函數(shù)用于從另一個已存在的對象創(chuàng)建新對象。它通常用于復(fù)制另一個對象的屬性值,而不共享原始對象的數(shù)據(jù)。
class Person {
public:
string name;
int age;
Person(const Person& other) { // 拷貝構(gòu)造函數(shù)
name = other.name;
age = other.age;
}
};
int main() {
Person p1("Alice", 30); // 創(chuàng)建 Person 對象
Person p2(p1); // 拷貝構(gòu)造函數(shù)創(chuàng)建 p2
cout << p2.name << ", " << p2.age << endl; // 輸出:Alice, 30
return 0;
}
移動構(gòu)造函數(shù)
移動構(gòu)造函數(shù)用于從即將銷毀的臨時對象轉(zhuǎn)移資源到新對象。它通常用于避免不必要的資源復(fù)制,并提高性能。
class Person {
public:
string name;
int age;
Person(Person&& other) { // 移動構(gòu)造函數(shù)
name = std::move(other.name);
age = other.age;
// 將 other 的資源轉(zhuǎn)移到 this
}
};
int main() {
Person p1("Bob", 25); // 創(chuàng)建 Person 對象
Person p2(std::move(p1)); // 移動構(gòu)造函數(shù)創(chuàng)建 p2
cout << p2.name << ", " << p2.age << endl; // 輸出:Bob, 25
cout << p1.name << ", " << p1.age << endl; // 輸出:, 0 (p1 的資源已轉(zhuǎn)移)
return 0;
}
構(gòu)造函數(shù)的訪問控制
構(gòu)造函數(shù)的訪問權(quán)限可以使用訪問控制修飾符來控制,例如 public
、private
和 protected
。
-
public
:構(gòu)造函數(shù)可以在類外部的任何地方調(diào)用。 -
private
:構(gòu)造函數(shù)只能在類的內(nèi)部調(diào)用。 -
protected
:構(gòu)造函數(shù)可以在類的內(nèi)部或其子類中調(diào)用。
總結(jié)
構(gòu)造函數(shù)是 C++ 中重要的面向?qū)ο缶幊虣C制,用于初始化和管理對象的狀態(tài)。通過理解不同類型的構(gòu)造函數(shù)及其用法,您可以創(chuàng)建健壯且可維護的 C++ 代碼。
最后
為了方便其他設(shè)備和平臺的小伙伴觀看往期文章:
微信公眾號搜索:Let us Coding
,關(guān)注后即可獲取最新文章推送文章來源:http://www.zghlxwxcb.cn/news/detail-855697.html
看完如果覺得有幫助,歡迎點贊、收藏、關(guān)注文章來源地址http://www.zghlxwxcb.cn/news/detail-855697.html
到了這里,關(guān)于C++ 構(gòu)造函數(shù)實戰(zhàn)指南:默認構(gòu)造、帶參數(shù)構(gòu)造、拷貝構(gòu)造與移動構(gòu)造的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!