亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++復制構造函數參數類型的探討

2019-11-08 01:12:16
字體:
來源:轉載
供稿:網友

部分轉載自

#include<iostream>using namespace std;class CExample{PRivate: int m_nTest;public: CExample(int x) : m_nTest(x)      //帶參數構造函數 {   cout << "constructor with argument"<<endl; } // 拷貝構造函數,參數中的const不是嚴格必須的,但引用符號是必須的 CExample(const CExample & ex)     //拷貝構造函數 {  m_nTest = ex.m_nTest;  cout << "copy constructor"<<endl; } CExample& Operator = (const CExample &ex)   //賦值函數(賦值運算符重載) {   cout << "assignment operator"<<endl;  m_nTest = ex.m_nTest;  return *this;                //返回是引用時,不需要調用復制構造函數,否則,需要調用 } void myTestFunc(CExample ex) { }};int main(void){ CExample aaa(2); CExample bbb(3); bbb = aaa; CExample ccc = aaa; bbb.myTestFunc(aaa); return 0; }

如果你能一眼看出就是這個結果的話, 恭喜你,可以站起來扭扭屁股,不用再往下看了。如果你的結果和輸出結果有誤差, 那拜托你謙虛的看完。第一個輸出: constructor with argument      // CExample aaa(2);如果你不理解的話, 找個人把你拖出去痛打一頓,然后嘴里還喊著“我是二師兄,我是二師兄.......”第二個輸出:constructor with argument     // CExample bbb(3);分析同第一個第三個輸出: assignment operator                // bbb = aaa;第四個輸出: copy constructor                      // CExample ccc = aaa;這兩個得放到一塊說。 肯定會有人問為什么兩個不一致。原因是, bbb對象已經實例化了,不需要構造,此時只是將aaa賦值給bbb,只會調用賦值函數,就這么簡單,還不懂的話,撞墻去! 但是ccc還沒有實例化,因此調用的是拷貝構造函數,構造出ccc,而不是賦值函數,還不懂的話,我撞墻去!!第五個輸出: copy constructor                      //  bbb.myTestFunc(aaa);實際上是aaa作為參數傳遞給bbb.myTestFunc(CExample ex), 即CExample ex = aaa;和第四個一致的, 所以還是拷貝構造函數,而不是賦值函數, 如果仍然不懂, 我的頭剛才已經流血了,不要再讓我撞了,你就自己使勁的再裝一次吧。通過這個例子, 我們來分析一下為什么拷貝構造函數的參數只能使用引用類型。看第四個輸出: copy constructor                      // CExample ccc = aaa;構造ccc,實質上是ccc.CExample(aaa); 我們假如拷貝構造函數參數不是引用類型的話, 那么將使得 ccc.CExample(aaa)變成aaa傳值給ccc.CExample(CExample ex),即CExample ex = aaa,因為 ex 沒有被初始化, 所以 CExample ex = aaa 繼續調用拷貝構造函數,接下來的是構造ex,也就是 ex.CExample(aaa),必然又會有aaa傳給CExample(CExample ex), 即 CExample ex = aaa;那么又會觸發拷貝構造函數,就這下永遠的遞歸下去。所以繞了那么大的彎子,就是想說明拷貝構造函數的參數使用引用類型不是為了減少一次內存拷貝, 而是避免拷貝構造函數無限制的遞歸下去。

附帶說明,在下面幾種情況下會調用拷貝構造函數:a、顯式或隱式地用同類型的一個對象來初始化另外一個對象。如上例中,用對象c初始化d;b、作為實參(argument)傳遞給一個函數。如CClass(const CClass c_class)中,就會調用CClass的拷貝構造函數;c、在函數體內返回一個對象時,也會調用返回值類型的拷貝構造函數;d、初始化序列容器中的元素時。比如 vector<string> svec(5),string的缺省構造函數和拷貝構造函數都會被調用;e、用列表的方式初始化數組元素時。string a[] = {string(“hello”), string(“world”)}; 會調用string的拷貝構造函數。如果在沒有顯式聲明構造函數的情況下,編譯器都會為一個類合成一個缺省的構造函數。如果在一個類中聲明了一個構造函數,那么就會阻止編譯器為該類合成缺省的構造函數。和構造函數不同的是,即便定義了其他構造函數(但沒有定義拷貝構造函數),編譯器總是會為我們合成一個拷貝構造函數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女主播| 亚洲欧洲日本专区| 亚洲欧美另类在线观看| 在线观看中文字幕亚洲| 久久精品影视伊人网| 欧美日韩一区二区在线| 久久网福利资源网站| 国产一区二区三区毛片| 亚洲第一福利在线观看| 国产一级揄自揄精品视频| 欧美影院在线播放| 成人在线精品视频| 美女av一区二区| 亚洲第一二三四五区| 亚洲香蕉在线观看| 国产噜噜噜噜噜久久久久久久久| 国产精品爽爽爽| 欧美另类交人妖| 欧美日韩免费网站| 欧美寡妇偷汉性猛交| 国产精品福利在线观看| 激情成人在线视频| 亚洲成人精品av| 91久久久久久久久久| 亚洲小视频在线| 欧美成人精品在线观看| 国产亚洲精品91在线| 久久久这里只有精品视频| 日韩av在线免费| 欧美xxxx18国产| 久久久999国产| 岛国av午夜精品| 欧美国产高跟鞋裸体秀xxxhd| 久99九色视频在线观看| 最近更新的2019中文字幕| 亚洲男人的天堂在线| 亚洲欧美www| 亚洲人成网站在线播| 国产亚洲福利一区| 午夜精品理论片| 国产va免费精品高清在线观看| 亚洲国产欧美在线成人app| 丁香五六月婷婷久久激情| 欧美午夜女人视频在线| 欧美激情一级二级| 精品国产一区二区三区久久久狼| 欧美午夜片欧美片在线观看| 欧美有码在线观看| 国产精品网站视频| 欧美日韩在线一区| 久久精品国产免费观看| 欧美三级欧美成人高清www| 亚洲跨种族黑人xxx| 日韩欧美在线网址| 久久在精品线影院精品国产| 国产热re99久久6国产精品| 亚洲欧美日韩国产中文| 久热精品视频在线免费观看| 欧美一级淫片丝袜脚交| 国产xxx69麻豆国语对白| 亚洲97在线观看| 激情久久av一区av二区av三区| 欧美激情综合亚洲一二区| 亚洲人成77777在线观看网| 欧美整片在线观看| 色爱精品视频一区| 亚洲尤物视频网| 欧美激情精品久久久久| 日本最新高清不卡中文字幕| 91精品免费看| 日本免费久久高清视频| 欧美在线不卡区| 亚洲激情第一页| 日本欧美精品在线| 视频在线一区二区| 亚洲精品视频免费在线观看| 尤物精品国产第一福利三区| 最近日韩中文字幕中文| 777午夜精品福利在线观看| 青青久久av北条麻妃海外网| 97视频在线观看成人| 亚洲成人免费网站| 亚洲视频一区二区| 国产精品网站入口| 成人观看高清在线观看免费| 亚洲高清福利视频| 久久韩剧网电视剧| 高清日韩电视剧大全免费播放在线观看| 欧美色videos| 亚洲精品视频网上网址在线观看| 中文字幕日韩欧美精品在线观看| 国产精品欧美激情| 国产精品久久久久久久天堂| 久久人人爽亚洲精品天堂| 国产精品久久久久久久久久尿| 欧美日韩国产在线播放| 国产精品激情自拍| 国产精品影院在线观看| 伊是香蕉大人久久| 国产精品免费观看在线| 欧美国产日本在线| 日韩av手机在线看| 九九精品视频在线观看| 人人做人人澡人人爽欧美| 国产欧美日韩精品丝袜高跟鞋| 97在线视频免费播放| 日韩电影在线观看中文字幕| 国产精品入口尤物| 欧美性受xxxx黑人猛交| 久久色免费在线视频| 日韩成人av网址| 久久久久久综合网天天| 在线播放国产一区二区三区| 欧美激情奇米色| 久久综合久久88| 一区二区三区回区在观看免费视频| 91chinesevideo永久地址| 久久高清视频免费| 91性高湖久久久久久久久_久久99| 精品久久久久久中文字幕| 国产色综合天天综合网| 欧美性一区二区三区| 日韩精品免费在线视频观看| 草民午夜欧美限制a级福利片| 欧美成aaa人片在线观看蜜臀| 国产精品你懂得| 日韩中文字幕在线精品| 神马久久桃色视频| 国产精品白嫩初高中害羞小美女| 久久精品91久久香蕉加勒比| 成人久久久久久久| 国产精品欧美亚洲777777| 5566日本婷婷色中文字幕97| 日韩精品在线免费| 亚洲国产天堂久久综合网| 国内精品久久久久久影视8| 亚洲精品久久久久国产| 另类视频在线观看| 97在线看免费观看视频在线观看| 国产美女直播视频一区| 国内精品免费午夜毛片| 日韩电影中文 亚洲精品乱码| 成人淫片在线看| 国产主播欧美精品| 亚洲第一页在线| 日韩精品免费电影| 国产精品亚洲一区二区三区| 日韩成人av在线| 色噜噜狠狠狠综合曰曰曰| 欧美专区在线观看| 久久这里有精品视频| 亚洲一区二区三区777| 国产精品久久久久免费a∨| 91福利视频网| 久久精品国产2020观看福利| 美女啪啪无遮挡免费久久网站| 色av吧综合网| 57pao精品| 91精品国产亚洲| 国产不卡在线观看| 午夜精品国产精品大乳美女| 国产女精品视频网站免费| 91精品久久久久久久久久久| 亚洲精品久久久一区二区三区|