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

  C++博客 :: 首頁 :: 聯系 ::  :: 管理
  163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

常用鏈接

留言簿(48)

我參與的團隊

搜索

  •  

積分與排名

  • 積分 - 402531
  • 排名 - 59

最新評論

閱讀排行榜

評論排行榜

C++編譯器會為每個類自動生成一個默認的構造函數、析構函數、賦值函數、拷貝構造函數,這當然是在你沒有為你的類聲明這些函數的時候。這些默認的功能函數在為你提供方便的時候,也會給你帶來麻煩。

例如:

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

  ...                           // 沒有拷貝構造函數和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的兩個對象,

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

當b=a時,因為你自己沒為類定義那些函數,所以C++編譯器會提供默認的賦值函數,這個缺省的賦值操作符會執行從a的成員到b的成員的逐個成員的賦值操作,對指針(a.data和b.data) 來說就是逐位拷貝。這種情況下至少有兩個問題。

第一,b曾指向的內存永遠不會被刪除,因而會永遠丟失。這是產生內存泄漏的典型例子。

第二,現在a和b包含的指針指向同一個字符串,那么只要其中一個離開了它的生存空間,其析構函數就會刪除掉另一個指針還指向的那塊內存,重復析構的問題。

下面的語句:

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

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

  ...

  b = a;                              // 執行 operator=,    調用默認賦值函數
                                         // 丟失b的內存,造成內存泄露。

}                                        // 離開生存空間, 調用
                                         // b的析構函數

string c = a;                       // c.data 的值不能確定!  調用默認的拷貝構造函數 
                                         // 但是a.data 已被刪除,無法進行拷貝構造。

 

當這類對象進行函數參數按值傳遞時,形參會按照缺省的拷貝構造函數進行初始化,形參擁有一個指向該對象指針的一個拷貝,當函數結束時,形參會調用析構函數,該對象的指針也被銷毀。

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);

}
在析構函數出設立斷點,你會看到析構函數執行兩次! 

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

posted on 2008-01-21 16:38 sdfasdf 閱讀(3916) 評論(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>
            日韩亚洲成人av在线| 亚洲欧美日韩中文视频| 一区二区三区四区五区精品视频| 国产精品成人在线| 一本久道久久综合狠狠爱| 国内外成人免费激情在线视频网站| 最新成人av在线| 激情六月综合| 欧美日韩日本网| 亚洲精品一品区二品区三品区| 亚洲小说欧美另类社区| 国产精品日韩欧美| 日韩一级二级三级| 亚洲免费一级电影| 在线日韩中文字幕| 欧美在线视频日韩| 99精品久久| 国产精品毛片a∨一区二区三区| 性感少妇一区| 日韩午夜av在线| 国产在线精品一区二区中文| 久久青青草综合| 一区二区三区免费网站| 免费久久99精品国产自| 亚洲性夜色噜噜噜7777| 国产美女扒开尿口久久久| 欧美日韩国产美女| 欧美国产综合一区二区| 欧美日韩国产成人| 欧美精品激情在线观看| 午夜国产一区| 一卡二卡3卡四卡高清精品视频| 免费视频最近日韩| 久久aⅴ国产紧身牛仔裤| 亚洲美女网站| 亚洲你懂的在线视频| 激情懂色av一区av二区av| 欧美va天堂| 欧美人妖另类| 国产精品久久久久久久一区探花| 久久亚洲精品一区二区| 欧美承认网站| 国产日韩欧美三级| 国产精品高清在线| 国产精品成av人在线视午夜片| 韩日成人在线| 国产精品久久一卡二卡| 免费不卡中文字幕视频| 久久精品中文字幕一区| 久久久999国产| 欧美v亚洲v综合ⅴ国产v| 欧美不卡福利| 亚洲免费视频一区二区| 美女视频黄 久久| 国产日产欧产精品推荐色 | 午夜精品一区二区三区在线视| 免费欧美网站| 久久影视精品| 国产精品久久国产愉拍| 亚洲国产天堂久久综合网| 一区二区三区日韩欧美精品| 欧美成人69av| 亚洲国产二区| 欧美一级视频精品观看| 欧美大片免费看| 国产亚洲欧美一区| 久久久999国产| 中文一区字幕| 国产精品永久入口久久久| 亚洲先锋成人| 欧美中文字幕在线观看| 国产午夜精品久久久久久久| 亚洲网址在线| 亚洲国产婷婷香蕉久久久久久99| 午夜精品久久久久久99热| 欧美日韩精品免费观看视一区二区| 日韩午夜高潮| 亚洲二区视频| 国产精品theporn88| 久久久蜜桃精品| 久久99在线观看| 国外成人性视频| 亚洲一二三区在线观看| 亚洲精品国产精品乱码不99| 精品电影在线观看| 久久av老司机精品网站导航| 久久尤物视频| 一本色道久久88综合亚洲精品ⅰ| 亚洲精一区二区三区| 国产精品视频一二| 亚洲电影免费| 欧美激情精品久久久久久蜜臀 | 国产人成精品一区二区三| 夜夜嗨av一区二区三区| 亚洲国产专区校园欧美| 欧美色播在线播放| 亚洲美女黄色片| 一区二区三区精品在线| 久久精品国产在热久久 | 在线观看视频一区| 一区二区三区视频在线| 国产毛片精品国产一区二区三区| 一本大道久久a久久精二百| 久久久久一区二区三区| 亚洲老司机av| 亚洲婷婷综合色高清在线| 最新精品在线| 猫咪成人在线观看| 久久综合给合久久狠狠狠97色69| 一区二区三区免费网站| 欧美日韩成人在线播放| 亚洲国产精品第一区二区三区| 国产日韩欧美黄色| 久久全球大尺度高清视频| 欧美黄色免费网站| 亚洲精品久久久久中文字幕欢迎你| 亚洲在线国产日韩欧美| 中日韩男男gay无套| 久久久www成人免费毛片麻豆| 国产精品对白刺激久久久| 午夜亚洲福利在线老司机| 亚洲国产精品久久91精品| 亚洲特级毛片| 国产一区视频在线看| 亚洲综合首页| 麻豆成人综合网| 99国产精品一区| 好看的日韩视频| 国产精品久久77777| 久久裸体艺术| 久久―日本道色综合久久| 午夜激情久久久| 99热在线精品观看| 一区二区在线观看av| 久久久久99精品国产片| 性色av香蕉一区二区| 欧美激情国产精品| 亚洲国产日韩在线一区模特| 你懂的视频欧美| 久久精品一本| 亚洲图中文字幕| 在线免费观看一区二区三区| 欧美日韩一区二区高清| 久久亚洲电影| 午夜综合激情| 一区二区三区日韩在线观看| 亚洲视频二区| 亚洲高清视频一区| 麻豆成人在线观看| 久久综合电影| 亚洲主播在线观看| 午夜视频一区二区| 一区二区三区久久网| 欧美一区二区三区四区高清| 欧美一区三区三区高中清蜜桃| 欧美一区二区三区免费视频| 另类人畜视频在线| 欧美国产丝袜视频| 欧美 日韩 国产 一区| 欧美人成免费网站| 国产精品初高中精品久久| 欧美日韩精品久久久| 国产精品国产a级| 一区在线视频| 午夜国产不卡在线观看视频| 亚洲精品裸体| 欧美制服丝袜| 欧美电影免费观看高清完整版| 亚洲高清视频在线| 久久aⅴ国产紧身牛仔裤| 久久婷婷综合激情| 亚洲人成人99网站| 日韩一区二区电影网| 亚洲欧洲日韩女同| 欧美高清在线一区| 欧美福利在线观看| 国产精品区一区二区三| 制服诱惑一区二区| 日韩亚洲不卡在线| 久久精品国产99| 国产日韩欧美精品在线| 亚洲区一区二区三区| 亚洲欧美一区二区激情| 亚洲国产精品成人综合色在线婷婷| 香蕉成人伊视频在线观看| 欧美精品免费观看二区| 日韩视频国产视频| 久久精品在线视频| 久久精品日韩| 亚洲精品美女在线| 性欧美xxxx大乳国产app| 久久亚洲国产成人| 国产精品一级| 这里只有精品在线播放| 亚洲欧美日本精品| 91久久国产综合久久蜜月精品 | 亚洲精品之草原avav久久| 久久青草福利网站| 亚洲国产小视频在线观看| 亚洲毛片播放|