一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

一個例子徹底搞清楚拷貝構(gòu)造函數(shù)和賦值運算符重載的區(qū)別!?。?!

 herowuking 2015-11-04
復制代碼
class TestChild
{
public:
    TestChild()
    {
        x=0;
        y=0;
        printf("TestChild: Constructor be called!\n");
    }
    ~TestChild(){}
    TestChild(const TestChild& tc)
    {
        x=tc.x;
        y=tc.y;
        printf("TestChild: Copy Constructor called!//因為寫在了Test(拷貝)構(gòu)造函數(shù)的初始化列表里\n");
    }
    
    const TestChild& operator=(const TestChild& right)
    {
        x=right.x;
        y=right.y;
        printf("TestChild: Operator = be called! //因為寫在了Test(拷貝)構(gòu)造函數(shù)的函數(shù)體里\n");
        return *this;
    }

    int x,y;
};

class Test
{
public:

    Test(){printf("Test:      Constructor be called!\n");}
    explicit Test(const TestChild& tcc)
    {
        tc=tcc;
    }
    ~Test(){}
    Test(const Test& test):tc(test.tc)
    {
        tc=test.tc;
        printf("Test:      Copy Constructor be called!\n");
    }

    const Test & operator=(const Test& right)
    {
        tc=right.tc;
        printf("Test:      Operator= be called!\n");
        return *this;
    }

    TestChild tc;
};

int main()
{
    printf("1、Test中包含一個TestChild,這兩個類分別具有構(gòu)造函數(shù)、\n   拷貝構(gòu)造函數(shù)、重載operator=。\n\n");
    printf("2、在調(diào)用Test的構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)之前,會根據(jù)跟在\n   這些函數(shù)后的初始化列表去初始化其\n   TestChild變量(調(diào)用TestChild的拷貝構(gòu)造函數(shù)去初始化)\n\n");
    printf("3、一旦進入Test的構(gòu)造函數(shù)體或拷貝構(gòu)造函數(shù)體,則說明其成員變量TestChild已\n   經(jīng)通過TestChild的構(gòu)造函數(shù)或TestChild的拷貝構(gòu)造函數(shù)構(gòu)造出了對象\n");
    printf("   所以,在Test的構(gòu)造函數(shù)體或拷貝構(gòu)造函數(shù)體中,再去使用=號\n   給TestChild的時候,調(diào)用的就是TestChild的operator=,\n   而不是TestChild的拷貝構(gòu)造函數(shù)了\n");
    printf("   這就是Test構(gòu)造函數(shù)后面 “:” 初始化列表的存在意義?。╘n   為了調(diào)用成員變量的構(gòu)造函數(shù)或者拷貝構(gòu)造函數(shù))\n\n");
    printf("4、最后!揪出讓人困惑的終極原因!?。。。n   Test test2=test1和Test test2(test1)這兩種是TM一模一樣的\n   (都調(diào)用拷貝構(gòu)造函數(shù))?。。。〕诉@點兒之外,其他地方都是該是什么是什么(\"()\"調(diào)用構(gòu)造函數(shù),\"=\"調(diào)用賦值操作符)?。?!\n\n");
    printf("5、一個對象初始化完畢后,所有對這個對象的賦值都調(diào)用operator=\n\n輸出如下:");

    printf("Test test1; DO:\n");
    Test test1;
    printf("\n");
    printf("Test test2=test1; DO:\n");
    Test test2=test1;
    printf("\n");
    printf("Test test3(test2); DO:\n");
    Test test3(test2);
    printf("\n");
    printf("test3=test1; DO:\n");
    test3=test1;

     return 0;
}
復制代碼

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    免费国产成人性生活生活片| 中国美女草逼一级黄片视频| 九九热在线视频精品免费| 久久99国产精品果冻传媒| 欧美国产日韩变态另类在线看| 中文字幕一二区在线观看| 一级片黄色一区二区三区| 国产日韩综合一区在线观看| 国产免费一区二区不卡| 高清不卡一卡二卡区在线| 精品久久综合日本欧美| 国产不卡视频一区在线| 人妻久久这里只有精品| 久久国产亚洲精品成人| 精品香蕉国产一区二区三区| 好吊日成人免费视频公开| 在线懂色一区二区三区精品| 亚洲欧美日本国产有色| 久热久热精品视频在线观看| 欧美小黄片在线一级观看 | 少妇福利视频一区二区| 精品亚洲一区二区三区w竹菊 | 黄色在线免费高清观看| 欧美日韩黑人免费观看| 亚洲深夜精品福利一区| 男人和女人干逼的视频| 日本欧美三级中文字幕| 91天堂素人精品系列全集| 欧美成人精品一区二区久久| 欧美日韩国产黑人一区| 日本不卡视频在线观看| 精品国产品国语在线不卡| 东京热加勒比一区二区三区| 二区久久久国产av色| 亚洲性生活一区二区三区| 一区二区三区人妻在线| 国产日韩精品欧美综合区| 99在线视频精品免费播放| 午夜精品福利视频观看| 国产麻豆视频一二三区| 国产一级片内射视频免费播放|