<C++ - 構造和析構>

來源:互聯網
上載者:User

標籤:turn   預設建構函式   ace   知識   getc   參數   include   重載   protect   

/*    回顧上節的內容:            1.實現中的事情 物 ->類                      <屬性 -> 成員變數>                       <行為 -> 成員函數>            2.存取權限 public private (protected:受保護的)                函數 公有  成員  私人  公有可以在類外訪問  私人 只能類內訪問            3.struct 和class區別: 結構體就是公有的類                                  類就是私人的結構體         -->this 指標  指向對象本身 在成員函數中  可以在成員函數中訪問成員變數或者是調用其他成員函數(在類外不能使用)    新知識點:        1.構造  解構函式            1.1 建構函式                成員變數  私人  只能用類裡面的函數賦值                 建構函式  定義一個對象的時候 同時給他初始化                建構函式有時候也叫做: 構造器  函數名和類名相同  沒有傳回值                                          也不需要要調用(對象定義的時候自動調用 並且只調用一次)                                        建構函式  可以重載  可以預設(注意二義性)                                        構造自己調用                                        定義對象  對象後面沒有()  -->無參構造                                                 對象後面有()   調用有參構造                                                                               定義對象的時候同時會調用建構函式                                        不寫建構函式的時候  定義對象的時候會不會調用建構函式  (會調用)                                        沒寫  編譯器會給一個預設構造(沒有參數 沒有執行任何功能)不做任何事情                                        如果說你寫了一個建構函式  編譯器就不會給這個構造        2.new  delete        3.命令列參數*/#include <iostream>using namespace std;//====================================類函數========================================class sunmer{private:         // 私人成員不能在類外訪問    int x;       // 只是說明類中有哪些成員  不賦值    double y;public:    // 無參數構造    sunmer()   // 可以有參數  也可以沒有參數  可以重載    {        cout << "調用的是無參建構函式" << endl;        x = 0;        y = 0;     }    sunmer(int x, double y)     // 有參數構造    {        cout << "調用的是有參建構函式2" << endl;        this->x = x;        this->y = y;    }    sunmer(double y, int x = 0)   // 預設的建構函式    {        cout << "調用的是預設函數" << endl;        this->x = x;        this->y = y;    }    void play()    {        cout << "play well" << endl;    }    void setSummer()    {        //cin >> x >> y;        cin >> this->x >> this->y;    }    void setSummer(sunmer&temp)   // 這個傳遞一個參數  (2)    {        temp.x = 2;        this->x = 3;    }    void print()    {        cout << x << "\t" << y << endl;    }};/**    類 -->抽象    成員賦值方式:            1.建構函式    定義對象的時候給他賦值            2.定義其他函數    後面用對象調用給他賦值*/class student{    int x;public:    student(int x)   // 有參數    {        this->x = x;    }    /*student()    {    }*/};int main(){#if 0    sunmer seven,six;       // 定義一個seven對象    sunmer ou(3, 2.15);     // 調用有參數構造   參數可以是變數    sunmer danny(2);        // 調用預設建構函式    ou.print();    getchar();    seven.setSummer(six);   // 調用(2)行的函數    /**        temp.x   ->相當等於: six.x        thix->x  ->相對等於: seven.x    */    seven.play();            //函數調用的時候記得加括弧    seven.setSummer();        // 輸入資料    seven.print();            // 列印資料#else    //student bug;   // 不寫()   調用預設(無參)構造    // 錯誤  不存在預設建構函式  解決方案1  自己寫一個沒有參數的建構函式    // 解決方案2  調用有參建構函式  寫參數    //student arr[10];  // 定義類數組  對象沒辦法傳遞參數   -->調用無參構造    // 用堆記憶體申請類的動態數組    #endif    getchar();    return 0;}

 

<C++ - 構造和析構>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.