<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一.構造函數 ### 1.作用 + 指導編譯器為對象分配空間 + 完成對象的初始化操作 ### 2.特點 + **無名函數** 因為類型名不能作為函數名。 + **不可指定返回類型** 不能指定任何返回類型,即使void也不行。 + **支持成員初始化列表** ### 3.調用時機 >[warning]當該函數無參時,定義的對象后面不能加 () 。否則編譯器會把它理解為一個函數聲明。 對象初始化時: + 對象的創建 + `new` 對象 ### 4.定義與聲明 + **定義** 支持默認參數 + `類名(參數表) {}` + `類名(參數表) : 成員初始化列表 {}` + **聲明** `類名(參數表);` ### 5.默認構造函數 編譯器自動創建的空的公有內聯構造函數。 >[warning]當類滿足下列條件時,編譯器 **不會** 自動創建默認構造函數: > >+ 有用戶定義的構造函數(包括有參的構造函數,例如拷貝構造函數和轉換構造函數) >[warning]當類滿足下列條件時,編譯器將默認構造函數定義為棄置的 `delete`(在C++11之前,這些情況下編譯器不會自動創建默認構造函數) : >+ 非靜態類類型數據成員或基類沒有無參構造函數,或無參構造函數不能訪問(例如將無參構造函數設置為私有)。 >+ 非靜態類類型數據成員或基類沒有析構函數,或析構函數不能訪問(例如將析構函數設置為私有)。 ### 6.缺省(無參)構造函數 默認構造函數和用戶自定義的無參構造函數。 >[warning] 若要創建無參對象,即使在類中已有有參構造函數的情況下,也要增加一個無參構造函數,否則編譯出錯。 ### 7.構造函數的訪問權限 8. 若所有構造函數的訪問類型為 `protected` ,則只有類內成員函數、派生類和友元可以創建該類的對象。 9. 若所有構造函數的訪問類型為 `private` ,則只有類內成員函數和友元可以創建對象。 ## 二.構造函數的成員初始化器列表 + **語法** `成員名(變量名),...` + **時機** + **初始化器列表執行時機** 類中數據成員的初始化時。 + **函數體執行時機** 類中數據成員的初始化后。 + **注意** 常變量和基類的構造只能在成員初始化器列表中完成。 >[danger] 反斜杠后面不能添加任何字符,包括注釋。 ```c++ //數組的簡單封裝 class Array { private: int* array; int length; public: Array(int* arr,int len) \ : array(arr),length(len) {} //成員初始化列表 Array() { array = NULL; length = 0; } }; ``` >[warning] 成員初始化的順序依照類的聲明順序,而不是成員初始化列表 ```c++ //一對夫妻 #include <iostream> #include <string> using namespace std; class Man{ private: string name_; public: Man() { cout<<"初始化Man對象"<<endl; } Man(string name):name_(name) { cout<<"初始化名字為"<<name<<"的Man對象"<<endl; } }; class Woman{ private: string name_; public: Woman() { cout<<"初始化Woman對象"<<endl; } Woman(string name):name_(name) { cout<<"初始化名字為"<<name<<"的Woman對象"<<endl; } }; class Pair{ private: Man husband_; Woman wife_; public: Pair() { cout<<"初始化Pair對象"<<endl; } Pair(string husband,string wife) \ :wife_(wife),husband_(husband) { //初始化順序與初始化列表無關 cout<<"初始化含參的Pair對象"<<endl; } }; int main() { Pair p("xfs","lhb"); cout<<"p已初始化完畢"<<endl; return 0; } ``` >[test] >初始化名字為xfs的Man對象 >初始化名字為lhb的Woman對象 >初始化含參的Pair對象 >p已初始化完畢
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看