国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++ 構(gòu)造函數(shù)實戰(zhàn)指南:默認構(gòu)造、帶參數(shù)構(gòu)造、拷貝構(gòu)造與移動構(gòu)造

這篇具有很好參考價值的文章主要介紹了C++ 構(gòu)造函數(shù)實戰(zhàn)指南:默認構(gòu)造、帶參數(shù)構(gòu)造、拷貝構(gòu)造與移動構(gòu)造。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

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、privateprotected

  • 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)注后即可獲取最新文章推送

看完如果覺得有幫助,歡迎點贊、收藏、關(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)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【C++初階】類與對象:6大默認成員函數(shù)------拷貝構(gòu)造和賦值運算符重載

    【C++初階】類與對象:6大默認成員函數(shù)------拷貝構(gòu)造和賦值運算符重載

    ? 拷貝構(gòu)造函數(shù): 只有單個形參,該形參是對本類類型對象的引用(一般常用const修飾) ,在用已存在的類類型對象創(chuàng)建新對象時由編譯器自動調(diào)用。 1. 拷貝構(gòu)造函數(shù)是 構(gòu)造函數(shù)的一個重載形式 ; 2. 拷貝構(gòu)造函數(shù)的 參數(shù)只有一個且必須是類類型對象的引用 ,使用傳值方式編

    2024年02月03日
    瀏覽(26)
  • C++之構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)終極指南:玩轉(zhuǎn)對象的誕生、生命周期與復(fù)制

    C++之構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)終極指南:玩轉(zhuǎn)對象的誕生、生命周期與復(fù)制

    W...Y的主頁 代碼片段分享? 前言: 在上篇內(nèi)容里,我們初識了C++中的類與對象,了解了類的定義、類的實例化、?類的作用域等等,今天我們將繼續(xù)深入了解類與對象的相關(guān)內(nèi)容,學習構(gòu)造函數(shù)、析構(gòu)函數(shù)與拷貝構(gòu)造函數(shù),話不多說我們發(fā)車?。?! 目錄 類的6個默認成員函數(shù)

    2024年02月06日
    瀏覽(20)
  • C++:構(gòu)造方法(函數(shù));拷貝(復(fù)制)構(gòu)造函數(shù):淺拷貝、深拷貝;析構(gòu)函數(shù)。

    C++:構(gòu)造方法(函數(shù));拷貝(復(fù)制)構(gòu)造函數(shù):淺拷貝、深拷貝;析構(gòu)函數(shù)。

    1.構(gòu)造方法(函數(shù)) 構(gòu)造方法是一種特殊的成員方法,與其他成員方法不同: 構(gòu)造方法的名字必須與類名相同; 無類型、可有參數(shù)、可重載 會自動生成,可自定義 一般形式:類名(形參); 例: Stu(int age); 當用戶沒自定義構(gòu)造方法時,系統(tǒng)將會執(zhí)行默認構(gòu)造方法,當用戶自定義一個

    2024年02月11日
    瀏覽(21)
  • 【C++初階】類和對象——構(gòu)造函數(shù)&&析構(gòu)函數(shù)&&拷貝構(gòu)造函數(shù)

    【C++初階】類和對象——構(gòu)造函數(shù)&&析構(gòu)函數(shù)&&拷貝構(gòu)造函數(shù)

    ========================================================================= 個人主頁點擊直達: 小白不是程序媛 C++系列專欄: C++頭疼記 ========================================================================= 目錄 前言 類的6個默認成員函數(shù) 構(gòu)造函數(shù) 概念 構(gòu)造函數(shù)的特性 析構(gòu)函數(shù) 概念 析構(gòu)函數(shù)特性 拷貝構(gòu)

    2024年02月06日
    瀏覽(57)
  • C++ 類和對象(二)構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)

    C++ 類和對象(二)構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)

    ????????本文將介紹類的6個默認成員函數(shù)中的構(gòu)造函數(shù)、析構(gòu)函數(shù)和拷貝構(gòu)造函數(shù),賦值重載和取地址重載涉及運算符重載的知識,將在下篇講解。所謂默認成員函數(shù),也就是每個類都有的成員函數(shù),我們可以顯式定義這些函數(shù),否則,編譯器會自動生成它們。 目錄 前言

    2024年02月09日
    瀏覽(41)
  • C++——拷貝構(gòu)造函數(shù)

    (用舊對象去構(gòu)造新對象) 拷貝構(gòu)造函數(shù),又稱復(fù)制構(gòu)造函數(shù),是一種特殊的構(gòu)造函數(shù),它由編譯器調(diào)用來完成一些基于同一類的其他對象的構(gòu)造及初始化。 參數(shù)的類型: ? 值類型(不行,會產(chǎn)生遞歸); 指針類型(能實現(xiàn)要求,但會出現(xiàn)歧義(感覺a的地址給b構(gòu)造));

    2024年02月02日
    瀏覽(20)
  • 【C++】類與對象(構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、常引用)

    【C++】類與對象(構(gòu)造函數(shù)、析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、常引用)

    ?????個人主頁: 秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343 ???系列專欄: ? 目錄 類的6個默認成員函數(shù) 構(gòu)造函數(shù) 特性 ?析構(gòu)函數(shù) 特性 ?析構(gòu)的順序 拷貝構(gòu)造函數(shù) 特性 常引用 ???? ?? hello! 各位鐵子們大家好哇。 ? ? ? ? ? ? ?今日更新了類與對象的構(gòu)造函數(shù)、

    2024年02月21日
    瀏覽(21)
  • 【C++】C++入門—初識構(gòu)造函數(shù) , 析構(gòu)函數(shù),拷貝構(gòu)造函數(shù),賦值運算符重載

    【C++】C++入門—初識構(gòu)造函數(shù) , 析構(gòu)函數(shù),拷貝構(gòu)造函數(shù),賦值運算符重載

    如果一個類中什么成員都沒有,簡稱為空類。 空類中真的什么都沒有嗎? 并不是 任何類在什么都不寫時,編譯器會自動生成以下6個默認成員函數(shù)。 默認成員函數(shù):用戶沒有顯式實現(xiàn),編譯器會生成的成員函數(shù)稱為默認成員函數(shù) 我們實現(xiàn)了,編譯器就不會生成了 構(gòu)造函數(shù)是

    2024年02月21日
    瀏覽(28)
  • 『C++成長記』拷貝構(gòu)造函數(shù)

    『C++成長記』拷貝構(gòu)造函數(shù)

    ??? 博客主頁: 小王又困了 ?? 系列專欄: C++ ?? 人之為學,不日近則日退 ?? 感謝大家點贊??收藏?評論?? 目錄 一、拷貝構(gòu)造函數(shù) ??1.1拷貝構(gòu)造函數(shù)的概念 ??1.2拷貝構(gòu)造函數(shù)的寫法 ??1.3編譯器生成的拷貝構(gòu)造 ??1.4拷貝構(gòu)造函數(shù)的用法 ??1.5拷貝構(gòu)造函數(shù)典型調(diào)

    2024年02月04日
    瀏覽(21)
  • thread類中構(gòu)造的函數(shù)參數(shù)必須是可拷貝的

    錯誤代碼 這段代碼會導(dǎo)致編譯錯誤,因為在C++中,如果你嘗試在線程(std::thread)中傳遞參數(shù),那么這些參數(shù)必須是可拷貝的,或者你需要使用 std::ref 來傳遞可引用的參數(shù)。 在你的代碼中,你嘗試在線程中傳遞一個整數(shù) 3 和一個 std::string 引用 s,這是不允許的,因為 std::t

    2024年02月06日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包