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

  C++博客 :: 首頁(yè) :: 聯(lián)系 ::  :: 管理
  163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

常用鏈接

留言簿(48)

我參與的團(tuán)隊(duì)

搜索

  •  

積分與排名

  • 積分 - 402347
  • 排名 - 59

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

C++編譯器會(huì)為每個(gè)類自動(dòng)生成一個(gè)默認(rèn)的構(gòu)造函數(shù)、析構(gòu)函數(shù)、賦值函數(shù)、拷貝構(gòu)造函數(shù),這當(dāng)然是在你沒有為你的類聲明這些函數(shù)的時(shí)候。這些默認(rèn)的功能函數(shù)在為你提供方便的時(shí)候,也會(huì)給你帶來麻煩。

例如:

class string {
public:
  string(const char *value);
  ~string();

  ...                           // 沒有拷貝構(gòu)造函數(shù)和operator=

private:
  char *data;
};

string::string(const char *value)
{
  if (value) {
    data = new char[strlen(value) + 1];
    strcpy(data, value);
  }
  else {
    data = new char[1];
    *data = '\0';
  }
}

inline string::~string() { delete [] data; }           //注意:new 和delete 要采用相同的形式。

如果有string的兩個(gè)對(duì)象,

string a("hello");
string b("world");

當(dāng)b=a時(shí),因?yàn)槟阕约簺]為類定義那些函數(shù),所以C++編譯器會(huì)提供默認(rèn)的賦值函數(shù),這個(gè)缺省的賦值操作符會(huì)執(zhí)行從a的成員到b的成員的逐個(gè)成員的賦值操作,對(duì)指針(a.data和b.data) 來說就是逐位拷貝。這種情況下至少有兩個(gè)問題。

第一,b曾指向的內(nèi)存永遠(yuǎn)不會(huì)被刪除,因而會(huì)永遠(yuǎn)丟失。這是產(chǎn)生內(nèi)存泄漏的典型例子。

第二,現(xiàn)在a和b包含的指針指向同一個(gè)字符串,那么只要其中一個(gè)離開了它的生存空間,其析構(gòu)函數(shù)就會(huì)刪除掉另一個(gè)指針還指向的那塊內(nèi)存,重復(fù)析構(gòu)的問題。

下面的語句:

string a("hello");                // 定義并構(gòu)造 a

{                                        // 開一個(gè)新的生存空間
  string b("world");            // 定義并構(gòu)造 b

  ...

  b = a;                              // 執(zhí)行 operator=,    調(diào)用默認(rèn)賦值函數(shù)
                                         // 丟失b的內(nèi)存,造成內(nèi)存泄露。

}                                        // 離開生存空間, 調(diào)用
                                         // b的析構(gòu)函數(shù)

string c = a;                       // c.data 的值不能確定!  調(diào)用默認(rèn)的拷貝構(gòu)造函數(shù) 
                                         // 但是a.data 已被刪除,無法進(jìn)行拷貝構(gòu)造。

 

當(dāng)這類對(duì)象進(jìn)行函數(shù)參數(shù)按值傳遞時(shí),形參會(huì)按照缺省的拷貝構(gòu)造函數(shù)進(jìn)行初始化,形參擁有一個(gè)指向該對(duì)象指針的一個(gè)拷貝,當(dāng)函數(shù)結(jié)束時(shí),形參會(huì)調(diào)用析構(gòu)函數(shù),該對(duì)象的指針也被銷毀。

class stack
{
public:
    stack(const char *value);
    ~stack();
    char * data;
};

stack::stack(const char *value)
{
    if(value)
    {
        data= new char[strlen(value)+1];
        strcpy(data,value);
    }
    else
    {
        data= new char[1];
        *data = '\0';
    }

}

inline stack::~stack()
{
    delete []data;
}

void dosth(stack pstk)
{
    cout<<pstk.data<<endl;
}

int main()
{
 stack str("iamxczhang");

  dosth(str);

}
在析構(gòu)函數(shù)出設(shè)立斷點(diǎn),你會(huì)看到析構(gòu)函數(shù)執(zhí)行兩次! 

牢記:只要類里有指針變量就得自己寫拷貝構(gòu)造函數(shù)和賦值函數(shù),但是你確定用不著這些函數(shù)時(shí),可以把這些函數(shù)做private聲明而不去實(shí)現(xiàn)它,這就防止了會(huì)有人去調(diào)用它們,也防止了編譯器去生成它們。

posted on 2008-01-21 16:38 sdfasdf 閱讀(3916) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美在线综合视频| 欧美在线观看网站| 国产精品久久久久久久久久久久 | 99re6这里只有精品视频在线观看| 在线观看亚洲a| 在线视频成人| 一区二区日韩| 午夜精品理论片| 欧美一区二区三区免费观看视频| 亚洲综合国产精品| 久久久久久有精品国产| 蜜桃av一区二区| 亚洲欧洲精品一区| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲国产视频一区| 日韩视频在线免费| 亚洲一区在线直播| 久久九九国产精品怡红院| 噜噜噜噜噜久久久久久91 | 美日韩免费视频| 亚洲欧洲另类国产综合| 99精品视频免费观看视频| 亚洲欧美国产精品va在线观看| 欧美一区二区在线播放| 欧美电影打屁股sp| 国产精品美女久久久久av超清| 国产色综合久久| 99国产精品久久久久老师 | 亚洲国产成人午夜在线一区| 99国产精品久久久久久久久久 | 欧美在线你懂的| 美女精品自拍一二三四| 国产精品久久久久久久久久ktv| 一区二区在线视频观看| 一区二区日本视频| 免播放器亚洲一区| 亚洲一区日本| 欧美人与性动交a欧美精品| 国产亚洲激情视频在线| 这里只有精品丝袜| 亚洲高清毛片| 欧美与黑人午夜性猛交久久久| 欧美日韩国产高清| 亚洲高清视频在线观看| 久久精品卡一| 亚洲无限乱码一二三四麻| 欧美高清视频在线观看| 狠狠综合久久av一区二区小说 | 亚洲精品日韩精品| 久久夜色撩人精品| 国产午夜精品福利| 亚洲一区二区在线看| 亚洲国产一区在线观看| 久久一区二区三区av| 国产一级揄自揄精品视频| 午夜精品久久久久久| 一本色道88久久加勒比精品| 免费在线看成人av| 亚洲日本欧美| 欧美激情国产日韩精品一区18| 久久激五月天综合精品| 国产欧美午夜| 久久久精品999| 午夜一级久久| 国产在线精品二区| 久久人人九九| 久久狠狠亚洲综合| 伊人久久大香线| 欧美成人国产va精品日本一级| 久久亚洲美女| 亚洲精品四区| 夜夜爽99久久国产综合精品女不卡| 欧美久久影院| 香蕉成人伊视频在线观看| 亚洲一区激情| 激情成人综合网| 欧美成人资源网| 欧美精品三级在线观看| 亚洲性视频h| 午夜精品久久久久久久久久久| 国产视频欧美视频| 欧美成人亚洲成人| 欧美日本一区二区三区| 亚洲直播在线一区| 亚洲欧洲av一区二区| 午夜免费日韩视频| 亚欧美中日韩视频| 黄色成人精品网站| 欧美国产日韩一区二区在线观看 | 国产亚洲精品久久久久久| 久久免费高清视频| 欧美成人综合在线| 香蕉久久一区二区不卡无毒影院 | 麻豆成人在线| 欧美激情在线| 欧美一区二区三区久久精品| 久久影院亚洲| 亚洲午夜小视频| 久久久国产亚洲精品| 99精品福利视频| 久久成人在线| 99国产精品国产精品毛片| 性亚洲最疯狂xxxx高清| 亚洲国产精品传媒在线观看| 久久精品国产免费看久久精品| 一区二区激情| 韩国视频理论视频久久| 亚洲精品一二区| 国语自产精品视频在线看一大j8 | 亚洲一区精彩视频| 亚洲日本在线观看| 欧美一区2区三区4区公司二百| 亚洲日本欧美天堂| 欧美一级专区免费大片| 亚洲婷婷在线| 欧美77777| 久久综合婷婷| 国产精品男gay被猛男狂揉视频| 欧美激情精品久久久六区热门| 国产精品一区二区三区久久久| 亚洲大胆在线| 一区二区三区在线观看视频 | 欧美伊人久久久久久午夜久久久久| 99精品热6080yy久久| 久久视频国产精品免费视频在线| 亚洲欧美日韩网| 欧美日韩另类国产亚洲欧美一级| 久久香蕉精品| 国产亚洲欧美日韩精品| 亚洲女爱视频在线| 亚洲欧美日韩一区在线| 欧美手机在线视频| 亚洲乱码国产乱码精品精天堂| 亚洲国产欧美不卡在线观看| 久久久久久久久综合| 久久综合99re88久久爱| 国内精品久久久久久久影视麻豆 | 9国产精品视频| 久久这里有精品视频| 久久综合久色欧美综合狠狠 | 国产精品第一区| 亚洲美女一区| 在线一区二区视频| 欧美午夜理伦三级在线观看| 日韩一级网站| 亚洲伊人观看| 国产日韩精品一区二区三区在线| 亚洲一线二线三线久久久| 欧美一区二区精品| 国产日韩欧美在线播放不卡| 亚洲欧美一区二区精品久久久| 午夜亚洲伦理| 国产综合精品一区| 免费国产自线拍一欧美视频| 亚洲精品美女在线观看| 在线亚洲成人| 国产欧美日韩精品在线| 久久国产婷婷国产香蕉| 亚洲国产精品一区制服丝袜 | 午夜免费日韩视频| 男人天堂欧美日韩| 亚洲精品美女在线观看| 国产精品麻豆成人av电影艾秋| 亚洲永久免费av| 裸体女人亚洲精品一区| 一本色道久久综合精品竹菊| 国产精品hd| 久久成人18免费观看| 亚洲成人在线视频网站| 亚洲男女自偷自拍| 黄色一区二区三区| 欧美日本一区| 久久国产精品久久w女人spa| 亚洲国产清纯| 久久精品国产在热久久 | 欧美成人精品影院| 亚洲一区二区三区国产| 久热精品视频在线免费观看| 99视频精品在线| 激情小说亚洲一区| 欧美日韩精品一区二区天天拍小说| 国产精品99久久不卡二区| 久久夜色精品国产亚洲aⅴ| 一本大道av伊人久久综合| 国产自产女人91一区在线观看| 欧美日本韩国在线| 久久久久免费| 亚洲一区免费网站| 亚洲精品国产欧美| 快播亚洲色图| 亚洲欧美一区二区原创| 日韩视频在线免费观看| 国产一区二三区| 欧美日韩一区二区免费视频| 免费成人高清| 久久精品免费播放| 欧美一区免费视频| 在线播放日韩专区| 午夜一区二区三区不卡视频| 99国产精品国产精品毛片|