青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

酸菜豬蹄的程序人生
木下編程屯屯燙燙
   什么時(shí)候調(diào)用拷貝構(gòu)造函數(shù)?什么時(shí)候調(diào)用賦值運(yùn)算符?

    很多初學(xué)者容易搞不清楚。我來總結(jié)一下就是:

    當(dāng)進(jìn)行一個(gè)類的實(shí)例初始化的時(shí)候,也就是構(gòu)造的時(shí)候,調(diào)用的是構(gòu)造函數(shù)(如是用其他實(shí)例來初始化,則調(diào)用拷貝構(gòu)造函數(shù)),非初始化的時(shí)候?qū)@個(gè)實(shí)例進(jìn)行賦值調(diào)用的是賦值運(yùn)算符。

    示例如下:

 1 #include <iostream>
 2 using namespace std;
 3 /************************************************************************/
 4 /* 該例子用來說明copy constructor 和 賦值運(yùn)算符的調(diào)用情況                      */
 5 /************************************************************************/
 6 class CTest
 7 {
 8 public:
 9     int m_muber;
10     CTest():m_muber(0)
11     {
12         cout << "CTest()" << endl;
13     }
14     CTest(const CTest& t)
15     {
16         cout << "CTest(const CTest& t)" << endl;
17         this->m_muber = t.m_muber;
18     }
19     CTest(const int& t)
20     {
21         cout << "CTest(const int& t)" << endl;
22         this->m_muber = t;
23     }
24     CTest& operator=(const CTest& t)
25     {
26         cout << "CTest& operator=(const CTest& t)" << endl;
27         this->m_muber = t.m_muber;
28         return *this;
29     }
30     CTest& operator=(const int& t)
31     {
32         cout << "CTest& operator=(const int& t)" << endl;
33         this->m_muber = t;
34         return *this;
35     }
36 
37 
38 };
39 int main()
40 {
41     cout << "*********CTest a****************" << endl;
42     CTest a;
43     cout << "*********CTest b(a)*************" << endl;
44     CTest b(a);
45     cout << "*********CTest c = a ***********" << endl;
46     CTest c = a;
47     cout << "*********CTest d = 5************" << endl;
48     CTest d = 5;
49 
50     cout << "*********b = a************" << endl;
51     b = a;
52     cout << "*********c = 5************" << endl;
53     c = 5;
54 
55     return 0;
56 }
57 

    例子中執(zhí)行結(jié)果是:
*********CTest a****************
CTest()

*********CTest b(a)*************
CTest(const CTest& t)

*********CTest c = a ***********
CTest(const CTest& t)

*********CTest d = 5************
CTest(const int& t)

*********b = a************
******
CTest& operator=(const CTest& t)

*********c = 5************
******
CTest& operator=(const int& t)

 
posted on 2006-05-15 09:54 cooelaf 閱讀(1176) 評(píng)論(4)  編輯 收藏 引用 所屬分類: Pure C/C++
Comments
  • # re: 關(guān)于拷貝構(gòu)造函數(shù)和賦值運(yùn)算符
    <font color="#FF00FF" >Stone Jiang
    Posted @ 2006-05-15 10:31
    這個(gè)示例不錯(cuò),區(qū)分出了拷貝構(gòu)造函數(shù)和賦值函數(shù).

    有一個(gè)問題及建議
    C++類設(shè)計(jì)中,最重要的四個(gè)函數(shù)則(Big Four Function)是
    構(gòu)造函數(shù),析構(gòu)函數(shù),拷貝構(gòu)造函數(shù)和賦值函數(shù),博主是否在本文中,沒有正確的把構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)區(qū)分開來?
    CTest a;

    *********CTest a****************
    CTest()

    調(diào)用的應(yīng)該叫"構(gòu)造函數(shù)"而不是"拷貝構(gòu)造函數(shù)"


    CTest b(a);

    CTest b = a 應(yīng)是等價(jià)的,均調(diào)用
    "拷貝構(gòu)造函數(shù)"

    建議:博主同時(shí)闡述C++類設(shè)計(jì)中的 Big Four Function.

      回復(fù)  更多評(píng)論   
  • # re: 關(guān)于拷貝構(gòu)造函數(shù)和賦值運(yùn)算符
    CoderDream
    Posted @ 2006-05-15 10:34
    41 cout << "*********CTest a****************" << endl;
    42 CTest a; // 調(diào)用默認(rèn)構(gòu)造函數(shù)
    43 cout << "*********CTest b(a)*************" << endl;
    44 CTest b(a); // 調(diào)用拷貝構(gòu)造函數(shù)
    45 cout << "*********CTest c = a ***********" << endl;
    46 CTest c = a; // 調(diào)用拷貝構(gòu)造函數(shù)
    47 cout << "*********CTest d = 5************" << endl;
    48 CTest d = 5; // 調(diào)用拷貝構(gòu)造函數(shù),參數(shù)為int 型,會(huì)進(jìn)行類型轉(zhuǎn)換:
    49
    50 cout << "*********b = a************" << endl;
    51 b = a; // 調(diào)用重載操縱符=
    52 cout << "*********c = 5************" << endl;
    53 c = 5; // 調(diào)用重載操縱符=,參數(shù)為int 型,會(huì)進(jìn)行類型轉(zhuǎn)換:
      回復(fù)  更多評(píng)論   
  • # re: 關(guān)于拷貝構(gòu)造函數(shù)和賦值運(yùn)算符
    cooelaf
    Posted @ 2006-05-15 10:41
    @&lt;font color=&quot;#FF00FF&quot; &gt;Stone Jiang


    嗯,我這里主要是想說明拷貝構(gòu)造函數(shù)和賦值運(yùn)算符的區(qū)別。所以沒放在一般構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)上。希望不要誤導(dǎo)了別人:)  回復(fù)  更多評(píng)論   
  • # re: 關(guān)于拷貝構(gòu)造函數(shù)和賦值運(yùn)算符
    lijun
    Posted @ 2006-05-15 14:11
    無意中找到你的博客了,本來是想找找:一個(gè)類在什么情況下 必須 寫拷貝構(gòu)造函數(shù),在什么情況下可以不用寫(即調(diào)用默認(rèn)的拷貝構(gòu)造函數(shù)).
    必須就是如果你沒有寫,程序在調(diào)用了拷貝構(gòu)造函數(shù)后,就會(huì)出錯(cuò)!
    不用寫就是,程序在調(diào)用了默認(rèn)拷貝構(gòu)造函數(shù)后,是正常的.
    其實(shí)這個(gè)問題很簡單回答的.但是是怎樣的情況使我想起到這里的呢!
    vector<Csocket> VECTOR;
    VECTOR m_SocketVector;
    ...
    接收ClientSocket函數(shù):
    {
    Csocket sock;
    sock.m_hSock = accept(m_ServerSocket.m_hSocket,...
    m_SocketVector.push_back(sock);
    }
    這是必然調(diào)用拷貝構(gòu)造函數(shù),想想效果怎樣!?
    當(dāng)然上面的可以這樣寫:
    vector<Csocket*> VECTOR;
    VECTOR m_SocketVector;
    接收ClientSocket函數(shù):
    {
    Csocket sock = new Csocket;
    sock->m_hSock = accept(m_ServerSocket.m_hSocket,...
    m_SocketVector.push_back(&sock);
    }
    那個(gè)更好呢?
    有一個(gè)假設(shè),本程序?qū)崿F(xiàn)的是短連接,會(huì)有不斷的Socket連接,斷開.
    當(dāng)然斷開時(shí)是會(huì)調(diào)用delete的. 也就說白了,用new程序會(huì)不斷的申請(qǐng)堆空間,再不斷的釋放空間.這樣作為一個(gè)服務(wù)器來說,時(shí)間長了會(huì)有堆的內(nèi)存碎片,程序運(yùn)行會(huì)變慢??但是用vector 系統(tǒng)會(huì)處理內(nèi)存碎片的處理的(聽說的) ??!
    考慮這個(gè)原因,將要怎樣處理??
    但是用上一種方法的話,系統(tǒng)會(huì)不斷的調(diào)用拷貝一個(gè)對(duì)象,再析構(gòu)調(diào)那個(gè)臨時(shí)對(duì)象.也是影響了效率!!??

      回復(fù)  更多評(píng)論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            精品1区2区3区4区| 久久这里只精品最新地址| 羞羞漫画18久久大片| 午夜精品区一区二区三| 亚洲欧美在线一区二区| 欧美一区二区免费观在线| 欧美一区网站| 欧美jjzz| 亚洲精品日韩在线观看| 亚洲视频999| 欧美在线亚洲在线| 男女激情久久| 国产精品久久久久av| 国产精品制服诱惑| 亚洲成人资源网| 亚洲午夜免费福利视频| 久久久久久色| 日韩视频一区二区三区在线播放 | 国产欧美日韩精品专区| 国产色爱av资源综合区| 在线观看精品| 亚洲天堂成人| 久久女同精品一区二区| 亚洲国产精品久久久久婷婷老年 | 欧美激情国产高清| 亚洲视频一区二区免费在线观看| 欧美影视一区| 欧美日韩在线高清| 亚洲电影有码| 欧美亚洲日本国产| 亚洲国产欧美一区二区三区久久| 亚洲一区综合| 欧美电影免费观看大全| 国产精品一区二区视频| 亚洲麻豆视频| 麻豆精品一区二区综合av| 一区二区av| 欧美国产一区二区在线观看 | 免费观看一区| 亚洲欧美日韩国产成人| 欧美高清视频免费观看| 国产一区二区高清不卡| 激情成人综合网| 男人插女人欧美| 亚洲一区二区在线免费观看视频| 久久亚洲视频| 狠狠88综合久久久久综合网| 亚洲一区免费视频| 亚洲另类在线一区| 欧美成年人网| 亚洲高清视频中文字幕| 久久亚洲精品欧美| 欧美一区二区播放| 国产精品一二三视频| 一本一本a久久| 欧美国产高潮xxxx1819| 久久精品成人欧美大片古装| 国产欧美高清| 久久久久**毛片大全| 亚洲综合欧美日韩| 国产精品高精视频免费| 亚洲综合二区| 亚洲一区网站| 国产亚洲网站| 麻豆精品91| 欧美.www| 一区二区三区不卡视频在线观看| 亚洲欧洲日产国产网站| 欧美精品久久久久久久免费观看| 99精品视频免费全部在线| 亚洲精品一区二区三区樱花| 欧美精品97| 亚洲男人av电影| 亚洲在线中文字幕| 国内精品久久久久久 | 在线视频精品一区| 国产精品美女久久| 久久福利电影| 久久综合导航| 亚洲午夜精品网| 亚洲欧美日韩精品久久久久| 国产一区在线看| 欧美激情国产日韩| 国产精品高清在线| 久久免费一区| 蜜臀av国产精品久久久久| 一区二区日韩| 欧美一级久久久久久久大片| 在线欧美三区| 在线视频欧美日韩精品| 国产一区二区三区网站| 欧美超级免费视 在线| 欧美日韩一区在线视频| 久久久精品国产免费观看同学| 欧美va天堂| 午夜性色一区二区三区免费视频| 久久精品在线视频| 亚洲一区二区影院| 久久九九精品| 1000部精品久久久久久久久| 伊人一区二区三区久久精品| 欧美手机在线视频| 亚洲人成艺术| 在线视频你懂得一区| 欧美三级欧美一级| 国产精品成人一区二区网站软件| 亚洲日本欧美| 欧美中文字幕在线播放| 亚洲成人中文| 国产区二精品视| 国产精品久久久久久久9999| 久久国产欧美精品| 99re热精品| 亚洲人成毛片在线播放| 麻豆精品国产91久久久久久| 西瓜成人精品人成网站| 亚洲小视频在线观看| 亚洲精品在线二区| 日韩一级视频免费观看在线| 狠狠久久婷婷| 亚洲大胆美女视频| 亚洲国产成人久久| 国产精品免费网站在线观看| 欧美 日韩 国产 一区| 久久久久青草大香线综合精品| 亚洲一二三区视频在线观看| 亚洲精品在线一区二区| 日韩一区二区福利| 亚洲一区国产| 久久久综合网站| 欧美精品亚洲二区| 国产精品区一区二区三区| 国产一区二区三区久久久| 国产午夜精品在线| 激情另类综合| 一区二区三区产品免费精品久久75 | 亚洲专区一区| 亚洲午夜久久久| 99re热这里只有精品视频| 亚洲精品网址在线观看| 亚洲一区二区免费视频| 久久亚洲精品一区二区| 欧美视频免费看| 国产偷国产偷精品高清尤物| 亚洲国产日韩欧美| 欧美一区二区三区免费看| 亚洲激情网站| 性色一区二区| 国产精品jvid在线观看蜜臀| 伊人狠狠色丁香综合尤物| 亚洲一二三区在线| 亚洲电影在线看| 欧美在线免费观看亚洲| 欧美日韩国产首页在线观看| 在线看成人片| 亚洲电影下载| 欧美粗暴jizz性欧美20| 依依成人综合视频| 久久精品国产亚洲a| 午夜日本精品| 国语自产精品视频在线看| 久久久久久欧美| 玖玖在线精品| 日韩系列欧美系列| 欧美国产日韩一区二区三区| 久久精品欧洲| 亚洲人www| 亚洲日本激情| 欧美激情精品久久久久| 中文国产一区| 欧美一级片久久久久久久| 精品成人国产| 日韩天天综合| 国产精品女人网站| 久久视频精品在线| 欧美激情一区二区三区在线视频观看| 亚洲精品久久久久久一区二区| 一本色道久久88综合日韩精品 | 欧美小视频在线| 亚洲视频第一页| 亚洲欧美影音先锋| 一区二区三区色| 久久本道综合色狠狠五月| 亚洲国产精品久久久久久女王| av成人国产| 国一区二区在线观看| 亚洲天堂激情| 正在播放日韩| 欧美美女视频| 日韩香蕉视频| 亚洲精品久久7777| 久久亚洲午夜电影| 美女露胸一区二区三区| 国产老女人精品毛片久久| 日韩午夜激情电影| 亚洲乱码国产乱码精品精天堂| 久久久久一区二区三区| 牛牛影视久久网| 亚洲精品系列| 国产精品免费一区二区三区在线观看 |