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

被無視的伊謝爾倫

雕欄玉砌應猶在,只是朱顏改

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  9 隨筆 :: 0 文章 :: 6 評論 :: 0 Trackbacks

例如有以下class:

class ?StringBad
{
????
private :
????????
char ? * ?str;
????????
int ?len;
?????????
????
public :
????????StringBad(
const ? char ? * ?s);
????????StringBad();
????????
~ StringBad();
????????
}
;

在構造函數和析構函數定義當中有如下定義:

StringBad::StringBad( const ? char ? * ?s)
{
????len?
= ?std::strlen(s);
????str?
= ? new ? char ?[len? + ? 1 ];
????
}
?

StringBad::StringBad()
{
????len?
= ? 4 ?;
????str?
= ? new ? char [ 4 ];
????
}
?

StringBad::
~ StringBad()
{
????
????delete?[]?str;
}

那么在程序當中如果有以下代碼:

StringBad?sports( " Spinach?Leaves?Bow1?for?bollars " );
StringBad?sailor?
= ?sports;

以上的第二條初始化語句將會調用什么構造函數?記住,這種形式的初始化等效于下面的語句:

StringBad?sailor? = ?StringBad(sports);

因為sports的類型為StringBad,因此相應的構造函數原型應該如下:

StringBad( const ?StringBad? & );

當我們使用一個對象來初始化另一個對象時,編譯器將自動生成上述構造函數(稱為復制構造函數,因為它創建對象的一個副本)。
現在我們不妨總結一下所謂的隱式成員函數,即C++自動提供了以下這些成員函數:

  • 默認構造函數,如果沒有定義構造函數。
  • 復制構造函數,如果沒有定義。
  • 賦值操作符,如果沒有定義。
  • 默認析構函數,如果沒有定義。
  • 地址操作符,如果沒有定義。

現在我們來看看我們沒有定義復制構造函數的情況下調用隱式復制構造函數將會出現什么情況。
從構造函數定義的代碼片斷可以看到,當中使用new操作符初始化了一個指針str,而隱式的復制構造函數是按值進行復制的,那么對于指針str,將會進行如下復制:

sailor.str? = ?sports.str;

這里復制的不是字符串,而是一個指向字符串的指針!也就是說,我們將得到兩個指向同一個字符串的指針!由此會產生的問題將不言而喻。當其中一個對象調用了析構函數之后,其str指向的內存將被釋放,這個時候我們如果調用另一個對象,其str指向的地址數據會是什么?很明顯將會出現不可預料的結果。

所以由此可見,如果類中包含了使用new初始化的指針成員,應當定義一個復制構造函數,以復制指向的數據,而不是指針,這被稱為深度復制。因為默認的淺復制(或成為成員復制)僅淺淺的賦值指針信息。

我們再看以下代碼片斷,我們稍做修改:

StringBad?headline1( " Celery?Stalks?at?Midnight " );
StringBad?knot;
knot?
= ?headline1;

這里的最后一行將與以上例子有所區別,現在是將已有對象賦給另一個已有對象,這將會采取其他操作,即使用重載的賦值操作符。(我們需要知道的是:初始化總是會調用復制構造函數,而使用=操作符時也可能調用賦值操作符)因為C++允許對象賦值,這是通過自動為類重載賦值操作符實現的。其原型如下:

Class_name? & ?Class_name:: operator ? = ?( const ?Class_name? & );

它接受并返回一個指向類對象的引用。
與隱式的復制構造函數一樣,隱式的對象賦值操作符也會產生同樣的問題,即包含了使用new初始化的指針成員時,只會采用淺復制。所以我們需要使用同樣的解決辦法,即定義一個重載的賦值操作符來實現深度復制。

所以綜上所述,如果類中包含了使用new初始化的指針成員,我們應該顯式定義一個復制構造函數和一個重載的賦值操作符來實現其深度復制,避免由此帶來的成員復制問題

參考書籍:C++PrimerPlus author:Stephen Prata

posted on 2006-09-28 14:33 愛上青菜的包子 閱讀(1598) 評論(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>
            欧美激情影音先锋| 黄色精品一区二区| 久久精品国产77777蜜臀| 亚洲理伦电影| 国产精品你懂的| 欧美一区二区三区四区高清| 亚洲欧美日韩国产综合| 亚洲高清免费| 亚洲伊人色欲综合网| 亚洲香蕉在线观看| 国产欧美精品xxxx另类| 六月丁香综合| 欧美一级在线亚洲天堂| 久久精品国产99| 国产精品99久久久久久白浆小说| 久久一二三区| 亚洲国产精品一区二区第一页| 欧美在线免费视频| 亚洲一二区在线| 久久久久久亚洲精品杨幂换脸 | 欧美激情五月| 亚洲欧美日本日韩| 久久青青草原一区二区| 久久爱www| 午夜伦理片一区| 亚洲综合精品自拍| 一本一本大道香蕉久在线精品| 欧美大片一区二区三区| 久久香蕉国产线看观看av| 久久精品国产在热久久 | 国模精品娜娜一二三区| 欧美视频一二三区| 久久国产婷婷国产香蕉| 欧美日韩一区综合| 欧美日韩在线播放三区| 亚洲夫妻自拍| 亚洲毛片播放| 久久婷婷亚洲| 欧美国产综合一区二区| 亚洲国产中文字幕在线观看| 午夜精品视频在线观看一区二区| 香蕉久久夜色| 欧美在线日韩在线| 国产精品欧美一区喷水| 国产视频精品免费播放| 一区在线免费| 老司机久久99久久精品播放免费| 欧美高清不卡| 欧美怡红院视频| 一本大道久久a久久精二百| 日韩视频在线免费观看| 欧美14一18处毛片| 国产精品高清在线观看| 国际精品欧美精品| 老司机精品视频网站| 亚洲欧洲日本国产| 影视先锋久久| 久久人人97超碰国产公开结果| 欧美一区成人| 久久久久亚洲综合| 国产综合久久久久久鬼色| 亚洲精品美女久久7777777| 亚洲一区二区高清| 99综合在线| 久久噜噜亚洲综合| 国产日韩精品在线| 日韩亚洲国产欧美| 久久久精品动漫| 久久久久久亚洲综合影院红桃| 欧美日韩高清区| 狠色狠色综合久久| 欧美a级片一区| 一区二区三区欧美在线观看| 欧美午夜激情视频| 亚洲精品韩国| 久久伊人精品天天| 欧美暴力喷水在线| 国产中文一区二区| 麻豆av一区二区三区| 亚洲欧美日韩在线高清直播| 欧美区高清在线| 亚洲激情视频在线播放| 欧美综合国产精品久久丁香| 久久国产精品99精品国产| 欧美另类一区| 18成人免费观看视频| 亚洲国产婷婷香蕉久久久久久99| 午夜日韩电影| 国产在线精品二区| 久久精品1区| 亚洲一区成人| 亚洲黄色免费| 欧美sm极限捆绑bd| 欧美激情aaaa| 国产免费观看久久黄| 午夜精品久久久久久| 久久久久久夜精品精品免费| 国产综合av| 久久久97精品| 欧美日韩精品免费观看视一区二区 | 国产精品v欧美精品v日韩 | 欧美日韩一区二区三区四区五区| 一区二区三区福利| 亚洲福利视频在线| 欧美成人网在线| 欧美在线高清视频| 性欧美videos另类喷潮| 欧美激情2020午夜免费观看| 久久国产免费| 久久成人一区二区| 亚洲午夜av电影| 麻豆freexxxx性91精品| 亚洲欧美区自拍先锋| 欧美成人午夜激情视频| 国产精品www.| 亚洲一区亚洲| 欧美成人免费播放| 国产欧美日韩视频一区二区| 亚洲自拍电影| 久久亚洲精品视频| 一区二区福利| 在线中文字幕日韩| 妖精视频成人观看www| 一本色道久久综合一区| 久久久精品动漫| 欧美在线欧美在线| 久久成人免费网| 亚洲视频一二三| 欧美一区二区三区的| 在线精品在线| 久久免费精品视频| a91a精品视频在线观看| 久久久久久有精品国产| 国产日韩欧美不卡在线| 嫩草成人www欧美| 精品av久久707| 亚洲美女视频在线免费观看| 国产伦精品免费视频| 亚洲午夜性刺激影院| 在线观看日韩欧美| 久久青草欧美一区二区三区| 国产午夜精品理论片a级探花 | 亚洲国产第一页| 久久精品夜夜夜夜久久| 免费欧美网站| 国产精品久久久亚洲一区| 在线性视频日韩欧美| 欧美特黄一级| 欧美不卡视频一区| 欧美理论片在线观看| 欧美aaaaaaaa牛牛影院| 国产精品亚洲网站| 亚洲免费综合| 一区二区欧美日韩| 久久亚洲视频| 久久精品国产清自在天天线| 欧美日韩在线视频一区| 免费成人美女女| 亚洲精品视频在线观看免费| 亚洲欧美日韩国产| 亚洲一区二区三区四区中文 | 午夜欧美大尺度福利影院在线看| 国产精品色午夜在线观看| 欧美激情一区在线| 国模精品一区二区三区色天香| 免费成人av在线看| 久久一区免费| 麻豆成人91精品二区三区| 亚洲精品一区二区三| 亚洲国产一区二区a毛片| 久久亚洲精选| 黄色成人免费观看| 久久亚洲春色中文字幕| 欧美日韩午夜| 亚洲欧美综合精品久久成人| 老司机一区二区三区| 国产婷婷色一区二区三区在线| 午夜精品一区二区三区在线播放| 亚洲性xxxx| 欧美日韩成人| 欧美一区二区视频在线观看| 性色一区二区| 国产精品区免费视频| 久久夜精品va视频免费观看| 久久久亚洲国产天美传媒修理工| 91久久精品一区二区别| 欧美成在线观看| 亚洲国产视频一区| 在线视频欧美日韩| 国产精品毛片| 亚洲深夜影院| 亚洲黄色影片| 日韩一级免费| 久久精品亚洲热| 亚洲一区亚洲二区| 欧美影院成年免费版| 一本色道久久88综合日韩精品| 欧美视频1区| 亚洲欧美日韩国产| 亚洲自拍偷拍麻豆|