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

brent's hut

C++拷貝構(gòu)造函數(shù)深入分析以及重寫operator =

?

class ?CTestCopyConstruct {
public :
????CTestCopyConstruct()
{
????????TRACE(
" Enter?CTestCopyConstruct();this?is?%d\n " , this );
????????strTest?
= ? " not?ok " ;
????????i?
= ? 0 ;
????}

????CTestCopyConstruct(
const ?CTestCopyConstruct? & src) {
????????TRACE(
" Enter?CTestCopyConstruct(const?CTestCopyConstruct?&src);this?is?%d;src?is?%d\n " , this , & src);
????????strTest?
= ?src.strTest;
????????i?
= ?src.i;
????}

????CTestCopyConstruct?
& ?operator? = ( const ?CTestCopyConstruct? & ?src) {
????????TRACE(
" Enter?CTestCopyConstruct?&?operator?=(const?CTestCopyConstruct?&?src);this?is?%d;src?is?%d\n " , this , & src);
????????strTest?
= ?src.strTest;
????????i?
= ?src.i;
????????
return ? * this ;
????}

????CString?strTest;
????
int ?i;
}
;

CTestCopyConstruct?GetTest()
{
????CTestCopyConstruct?ret1;
????ret1.strTest?
= ? " ok " ;
????ret1.i?
= ? 0 ;
????CTestCopyConstruct?ret2;

????
return ?ret1;
}


void ?CTestDlg::OnOK()?
{
????CTestCopyConstruct?var1;
????CTestCopyConstruct?var2?
= ?GetTest();

????TRACE(
" \nresult?1:\n " );
????TRACE(
" var1?is?%d\n " , & var1);
????TRACE(
" var2?is?%d?var2.str?is?%s\n\n " , & var2,var2.strTest);

????CTestCopyConstruct?var3?
= ?var2;
????CTestCopyConstruct?var4;
????var4?
= ?var2;

????TRACE(
" \nresult?2:\n " );
????TRACE(
" var3?is?%d?var3.str?is?%s\n " , & var3,var3.strTest);
????TRACE(
" var4?is?%d?var2.str?is?%s\n " , & var4,var4.strTest);
}



代碼如上,調(diào)試窗口輸出如下:
Enter CTestCopyConstruct();this is 1242980
Enter CTestCopyConstruct();this is 1242848
Enter CTestCopyConstruct();this is 1242840
Enter CTestCopyConstruct(const CTestCopyConstruct &src);this is 1242972;src is 1242848

result 1:
var1 is 1242980
var2 is 1242972 var2.str is ok

Enter CTestCopyConstruct(const CTestCopyConstruct &src);this is 1242964;src is 1242972
Enter CTestCopyConstruct();this is 1242956
Enter CTestCopyConstruct & operator =(const CTestCopyConstruct & src);this is 1242956;src is 1242972

result 2:
var3 is 1242964 var3.str is ok
var4 is 1242956 var2.str is ok

分析:
CTestCopyConstruct var1;\\1
CTestCopyConstruct var2 = GetTest();\\2
代碼的執(zhí)行如下:
當(dāng)前堆棧指針(sp) = 1242980
sp -= 8//在堆棧中為var1分配空間
在var1上(1242980 - 1242973)調(diào)用構(gòu)造函數(shù)
sp -= 8//在堆棧中為var2分配空間
sp -= n//保護(hù)當(dāng)前環(huán)境
進(jìn)入了GetTest函數(shù)
當(dāng)前sp = 1242848
sp -= 8//為ret1分配空間
構(gòu)建ret1
sp -= 8//為ret2分配空間
構(gòu)建ret2
......
對(duì)var2(1242972處的堆棧段)調(diào)用拷貝構(gòu)造函數(shù),以test1(1242848處)為參數(shù)
//析構(gòu)test1 test2等...
sp += n//恢復(fù)運(yùn)行環(huán)境
......

另:
operater = () 和默認(rèn)構(gòu)造函數(shù)不一樣,只重寫=運(yùn)算符而不提供拷貝構(gòu)造函數(shù),調(diào)用的仍然是默認(rèn)的構(gòu)造函數(shù)。
默認(rèn)構(gòu)造函數(shù)和賦值運(yùn)算符處理的情況不一樣,一個(gè)是在已分配的空間上調(diào)用,一個(gè)是在已構(gòu)造的對(duì)象上調(diào)用。

默認(rèn)拷貝構(gòu)造函數(shù)會(huì)調(diào)用類中各成員的拷貝構(gòu)造函數(shù)。CString 由于提供了拷貝構(gòu)造函數(shù),所以上面例子中即使去掉拷貝構(gòu)造函數(shù),var2 仍然會(huì)得到正確的值。

調(diào)試的環(huán)境是vc6.0 debug 默認(rèn)選項(xiàng)。編譯沒有優(yōu)化。

CTestCopyConstruct( const ?CTestCopyConstruct? & src)
????????
{
????????TRACE(
" Enter?CTestCopyConstruct(const?CTestCopyConstruct?&src);this?is?%d;src?is?%d\n " , this , & src);
????????strTest?
= ?src.strTest;
????????i?
= ?src.i;
????}




CTestCopyConstruct(
const ?CTestCopyConstruct? & src)
????????:strTest?(src.strTest)
{
????????TRACE(
" Enter?CTestCopyConstruct(const?CTestCopyConstruct?&src);this?is?%d;src?is?%d\n " , this , & src);
????????i?
= ?src.i;
????}

前者先調(diào)用了CString::CString()再調(diào)用CString::operator =
后者直接調(diào)用了CString::CString(CString & src);


默認(rèn)的賦值運(yùn)算的行為:首先調(diào)用父類的賦值運(yùn)算。
然后會(huì)為自己獨(dú)有的各成員尋找賦值運(yùn)算。如果成員的賦值運(yùn)算符被重寫,則調(diào)用這個(gè)重寫的賦值運(yùn)算符函數(shù),如果這個(gè)重寫的運(yùn)算符函數(shù)是private,編譯將無法通過。
默認(rèn)的拷貝構(gòu)造函數(shù)的行為:首先調(diào)用父類的拷貝構(gòu)造函數(shù)。
然后為自己獨(dú)有的各成員尋找拷貝構(gòu)造函數(shù)。如果這個(gè)成員提供拷貝構(gòu)造函數(shù),則調(diào)用之,如果成員的類提供的拷貝構(gòu)造函數(shù)是private,編譯將無法通過。
(子類完全可以把父類當(dāng)成自己的一個(gè)成員?)


可以說默認(rèn)的賦值運(yùn)算和默認(rèn)的拷貝構(gòu)造函數(shù)是類最常被用到的兩個(gè)函數(shù)了...內(nèi)部卻不是一般的復(fù)雜。

posted on 2006-03-30 10:34 brent 閱讀(1598) 評(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>
            欧美在线你懂的| 久久偷窥视频| 亚洲资源在线观看| 亚洲无线一线二线三线区别av| 免费观看久久久4p| 久久久精品国产99久久精品芒果| 欧美一区三区二区在线观看| 亚洲男人的天堂在线| 日韩午夜精品视频| 欧美91视频| 欧美风情在线观看| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 亚洲人成亚洲人成在线观看图片| 久久亚洲精品中文字幕冲田杏梨| 亚洲国产成人精品视频| 夜夜嗨网站十八久久| 国产精品久久午夜| 久久精品一区二区| 亚洲区欧美区| 久久九九热re6这里有精品| 亚洲第一精品夜夜躁人人躁 | 亚洲黄一区二区| 欧美日韩一区在线观看| 午夜亚洲性色福利视频| 亚洲电影下载| 午夜精品福利一区二区三区av| 国内精品久久久| 欧美日韩激情小视频| 香港久久久电影| 亚洲国产日日夜夜| 久久成人18免费观看| 亚洲美女中出| 国内精品国产成人| 国产精品jizz在线观看美国| 久久天堂国产精品| 亚洲欧美日韩国产综合精品二区| 亚洲国产精品久久久久秋霞蜜臀 | 99综合电影在线视频| 老司机久久99久久精品播放免费| 亚洲午夜免费视频| 亚洲人成精品久久久久| 国产视频欧美视频| 欧美色精品天天在线观看视频| 久久亚洲综合色一区二区三区| 亚洲专区欧美专区| 亚洲精选视频免费看| 男男成人高潮片免费网站| 午夜视频一区| 亚洲素人在线| aⅴ色国产欧美| 亚洲国产一区在线观看| 激情综合久久| 国色天香一区二区| 国产欧美高清| 国产精品爽爽爽| 欧美色视频一区| 欧美日本精品一区二区三区| 欧美成人中文| 免费永久网站黄欧美| 久久五月激情| 欧美专区中文字幕| 香蕉久久一区二区不卡无毒影院| 亚洲视频自拍偷拍| 99视频精品在线| 一本久久a久久免费精品不卡| 亚洲人人精品| 亚洲精品一区二区三区樱花| 亚洲日本无吗高清不卡| 久久五月天婷婷| 久久精品国产99国产精品| 欧美一区二区三区视频免费播放 | 99精品视频免费| 99re66热这里只有精品3直播| 91久久国产综合久久蜜月精品 | 99re6这里只有精品| 亚洲人成久久| 99热免费精品| 在线亚洲精品福利网址导航| 99精品视频免费观看视频| 亚洲免费久久| 亚洲欧美成人一区二区在线电影| 欧美小视频在线| 国产亚洲午夜| 国产精品一区久久久久| 国产精品国产福利国产秒拍| 国产精品爱啪在线线免费观看| 欧美小视频在线观看| 男人的天堂亚洲在线| 欧美久久久久久久| 激情欧美一区二区三区| 国产日韩一级二级三级| 国产偷国产偷精品高清尤物| 狠狠色狠狠色综合人人| 亚洲国产精品成人综合| 亚洲国产天堂久久综合| 亚洲精品一区二区三区不| 一本久久a久久精品亚洲| 亚洲在线观看免费| 久久久久九九九九| 亚洲成人在线视频播放| 99国产麻豆精品| 欧美一区二区三区免费看| 蜜桃av久久久亚洲精品| 国产精品vvv| 一区二区三区在线视频观看| 亚洲肉体裸体xxxx137| 亚洲欧美日本视频在线观看| 久久综合国产精品| 亚洲精品网址在线观看| 午夜精品国产精品大乳美女| 久久久久国产成人精品亚洲午夜| 欧美久久电影| 激情综合中文娱乐网| 99在线观看免费视频精品观看| 亚洲欧美日韩国产成人精品影院| 免费视频久久| 亚洲视频精选在线| 老司机精品久久| 国产精品视频久久久| 亚洲国产成人91精品| 亚洲欧美在线一区二区| 亚洲国产欧洲综合997久久| 亚洲一区在线直播| 欧美电影免费观看高清| 国产日韩欧美一区二区三区在线观看| 亚洲精品影视| 美女成人午夜| 亚洲欧美三级伦理| 欧美日韩高清在线| 在线观看91精品国产麻豆| 午夜精品一区二区三区四区| 最新69国产成人精品视频免费| 欧美在线影院| 国产精品免费福利| 99视频精品全部免费在线| 免费不卡中文字幕视频| 亚洲男同1069视频| 欧美三级视频在线| 99热精品在线观看| 欧美激情中文字幕乱码免费| 久久黄色级2电影| 国产欧美精品xxxx另类| 亚洲字幕一区二区| 亚洲另类自拍| 欧美精品久久久久久久久老牛影院 | 亚洲欧美一区在线| 91久久黄色| 欧美成人精品影院| 亚洲高清资源| 男人天堂欧美日韩| 久久狠狠亚洲综合| 国内精品久久久久久影视8| 午夜视频精品| 亚洲免费网站| 国产精品视频xxx| 亚洲欧美制服另类日韩| 亚洲天堂激情| 国产精品一区毛片| 性欧美办公室18xxxxhd| 亚洲一区二区三区四区五区黄 | 日韩一级精品视频在线观看| 免费日韩视频| 亚洲麻豆视频| 亚洲国产欧美在线人成| 欧美福利一区二区| 99riav久久精品riav| 亚洲人成网站777色婷婷| 男人的天堂成人在线| 日韩视频中文| 99这里只有久久精品视频| 欧美视频一区二| 新67194成人永久网站| 亚洲综合色在线| 国产一区三区三区| 欧美**字幕| 欧美日韩国产a| 午夜电影亚洲| 久久成年人视频| 亚洲国产乱码最新视频| 亚洲激情在线播放| 国产精品久久久999| 久久久噜噜噜久噜久久| 免费看成人av| 亚洲一区三区电影在线观看| 亚洲男人第一av网站| 在线精品国精品国产尤物884a| 亚洲国产高清在线观看视频| 欧美午夜不卡| 久久夜色精品一区| 欧美国产精品一区| 香蕉尹人综合在线观看| 久久久精品国产免费观看同学| 亚洲欧洲一区二区三区久久| 日韩午夜激情电影| 国产视频自拍一区| 亚洲国产天堂久久综合| 国产精品一区三区| 欧美激情一区二区三级高清视频 | 久久激五月天综合精品| 久久久女女女女999久久|