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

平凡的天才

目的是為人類造福
posts - 20, comments - 41, trackbacks - 0, articles - 6
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

c++構造函數與賦值操作

Posted on 2007-03-04 11:32 平凡的天才 閱讀(4817) 評論(1)  編輯 收藏 引用
轉自http://blog.csdn.net/fornormandy/archive/2004/08/19/79512.aspx
按照c++標準,編譯器會生成五個默認成員函數:
默認構造函數
拷貝構造函數
析構函數
operator=
operator&


class A
{
public:
A(int i) : m_i(i){}
int m_i;
};

分別說說吧:
1. A a = 0;
首先, compiler認為這樣寫是不符合規矩的, 因為A = A才是正常行為。
但是她并不放棄, 通過搜索, 發現A可以根據一個int構造, 同時這個A(int i)沒有用explicit修飾過。
那么A a = 0; 這樣的一句話隨即轉變成:
A tmp(0);
A a = tmp;
需要說明的是, A a = tmp是調用的copy ctor, 雖然class A中并沒有, 但是通常不寫copy ctor的話,
compiler都會生成一個memberwise assignment操作性質的ctor, 底層實現通常會以memcpy進行。

2. a = 10;
首先, 這樣同ctor的情況一樣, compiler無法直接進行操作。
類推, 等同于代碼:
A tmp(10);
a = tmp;
需要注意的是, a = tmp是調用的assignment操作, 同ctor一樣,我們自己不寫, 編譯器同樣進行
memberwise assignment操作。

3. fn(A a)
同樣, fn(10)也是不對的, 但是"按照慣例", 呵呵, 會有:
A tmp(10);
fn(tmp);

另外, 為你解惑:
copy ctor的寫法只能是T::T(const T &);
而assignment的寫法可以多變, 即任意. 以T為例,
可以有
T &operator = (int n);
也可有
T &operator = (const char *);
當然, 你要確認如此的定義是對T而言有意義.

然后, 上述a = tmp, 即調用的默認的、標準的、自動生成的T &operator = (const T &).
開銷是會有一個臨時的A tmp生成, 然后memcpy.
但如果你自已寫了T &operator = (int n), 那么a = 10即意味著a.m_i = 10.
當然, 以開銷而言要視你的T &operator = (int n)是否為inline了.

對于explicit, 當修飾explicit A(int i) : m_i(i){}, 那么即告訴compiler不要在私底下做那么多的轉換動作.
而且自動生成如A tmp(0)這樣的東西是我們不想要的, 因為某些情況下自動轉換這種行為是錯誤的.

最后, 相關此類問題, 還有一個話題, 即class A可以有operator int(), 會在
fn(int n){}
A a(3);
fn(a)
起到魔術般的作用. 關于這個, 留給你自己看看書吧:)

最后,祝學習C++的路上一帆風順。Good luck~

Feedback

# re: c++構造函數與賦值操作  回復  更多評論   

2010-12-18 10:43 by tt
編譯器會優化的,A a = 0;會直接轉化為 A a(6);不會去生成一個臨時對象然后在調用復制構造函數,至少在我的g++測試情況如此
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            99精品99久久久久久宅男| 亚洲裸体俱乐部裸体舞表演av| 亚洲一区二区三区免费观看| 欧美色大人视频| 午夜在线播放视频欧美| 免费在线观看日韩欧美| 亚洲神马久久| 亚洲国产专区校园欧美| 国产伦精品一区二区三区四区免费 | 欧美精品色综合| 亚洲女性裸体视频| 亚洲激情网址| 欧美偷拍另类| 性欧美xxxx大乳国产app| 亚洲自拍偷拍色片视频| 欧美亚洲一级| 亚洲欧美福利一区二区| 亚洲欧美一区二区精品久久久| 亚洲破处大片| 欧美成在线视频| 久久综合色播五月| 欧美在线高清| 欧美在线免费看| 在线亚洲一区| 日韩一级黄色av| 亚洲天堂成人在线观看| 久久9热精品视频| 亚洲国产精品久久久久| 欧美不卡视频一区发布| 久久综合久久久| 久久亚洲一区| 亚洲精品网址在线观看| 欧美激情中文字幕在线| 欧美第一黄网免费网站| 亚洲视频精选| 性伦欧美刺激片在线观看| 猛干欧美女孩| 欧美精品免费视频| 国产一区二区三区久久久| 国产午夜亚洲精品羞羞网站| 国产日韩欧美中文| 在线亚洲高清视频| 亚洲韩日在线| 久久久午夜精品| 欧美freesex交免费视频| 免费欧美在线| 国产一区二区三区在线免费观看| 亚洲精品一区中文| 久久久综合网站| 欧美国产日韩精品免费观看| 亚洲欧美bt| 国产精品入口福利| 极品av少妇一区二区| 亚洲国产精品一区制服丝袜| 亚洲国产激情| 久久久久久久久久久久久久一区| 久久免费视频网| 亚洲欧美中文日韩v在线观看| 欧美激情中文不卡| 亚洲乱码一区二区| 亚洲卡通欧美制服中文| 欧美精品1区2区| 一区二区精品在线观看| 亚洲另类视频| 国产精品福利av| 欧美成人午夜激情在线| 欧美体内谢she精2性欧美| 99精品国产热久久91蜜凸| 亚洲电影免费观看高清完整版| 亚洲作爱视频| 狼狼综合久久久久综合网| 欧美涩涩视频| 亚洲午夜羞羞片| 中文一区二区| 国产精品欧美日韩一区| 久久国产精品亚洲77777| 亚洲精品系列| 国产精品每日更新| 亚洲区中文字幕| 久久经典综合| 久久婷婷久久一区二区三区| 国产精品久久二区二区| 性18欧美另类| 亚洲欧洲久久| 欧美性一二三区| 久久精品视频导航| 免费久久精品视频| 亚洲欧美日韩第一区| 亚洲欧洲精品一区二区精品久久久| 免费亚洲一区二区| 亚洲小视频在线| 久久精品毛片| 国产在线精品自拍| 香蕉久久国产| 久久精品99无色码中文字幕 | 欧美激情精品久久久久久黑人| 欧美激情网站在线观看| 亚洲网站在线播放| 久久久伊人欧美| 亚洲一区二区成人| 久久永久免费| 性做久久久久久久久| 免费亚洲网站| 久久久久一区二区| 欧美三区在线视频| 欧美韩日一区二区三区| 国产乱码精品一区二区三区五月婷 | 亚洲毛片一区二区| 在线观看欧美黄色| 暖暖成人免费视频| 国产精品xxxxx| 亚洲高清资源综合久久精品| 国产欧美午夜| 久久免费高清| 欧美特黄一区| 91久久精品国产91久久性色| 国产日韩欧美三区| 夜夜嗨av一区二区三区网站四季av | 欧美1区视频| 国产欧美在线视频| 欧美在线视频一区| 欧美日韩 国产精品| 99国产精品99久久久久久粉嫩| 性欧美办公室18xxxxhd| 中文精品视频| 欧美日韩国产综合新一区| 欧美激情久久久| 亚洲国产成人久久综合一区| 欧美在线播放高清精品| 亚洲国产精品ⅴa在线观看| 亚洲一区二区三| 伊人一区二区三区久久精品| 亚洲女同在线| 欧美伊人久久| 国产美女高潮久久白浆| 亚洲一线二线三线久久久| 亚洲专区在线视频| 欧美影院视频| 久久国产免费看| 国产女同一区二区| 亚洲欧美中文在线视频| 欧美一区二区三区在线看| 国产精品久久久久影院亚瑟| 99天天综合性| 午夜欧美精品久久久久久久| 久久天天狠狠| 女女同性女同一区二区三区91| 激情文学一区| 能在线观看的日韩av| 亚洲激情在线激情| 中文久久乱码一区二区| 国产精品成人一区二区三区夜夜夜 | 欧美在线观看视频一区二区三区| 国产精品久久久久9999| 羞羞视频在线观看欧美| 老色鬼久久亚洲一区二区| 亚洲国产人成综合网站| 欧美激情第一页xxx| 久久精品视频播放| 黄网站免费久久| 欧美激情在线免费观看| 一区二区三区欧美视频| 亚洲欧洲日本国产| 欧美色另类天堂2015| 亚洲欧美一区二区三区在线 | 亚洲一区二区三区免费观看 | 中文国产亚洲喷潮| 国产日韩高清一区二区三区在线| 久久精品理论片| 99re6这里只有精品视频在线观看| 激情综合视频| 欧美精品videossex性护士| 在线亚洲欧美专区二区| 久久久亚洲人| 国产精品99久久久久久www| 国产日韩欧美在线播放不卡| 欧美丰满高潮xxxx喷水动漫| 亚洲免费在线精品一区| 欧美黄色免费| 久久精品国产欧美激情| 亚洲最新视频在线| 欧美精品一区二区三区在线看午夜 | 免费永久网站黄欧美| 亚洲每日更新| 久久美女艺术照精彩视频福利播放| 亚洲日本乱码在线观看| 久久女同互慰一区二区三区| 亚洲黄色一区二区三区| 久久精品国产99国产精品澳门| 亚洲精品国精品久久99热| 国产欧美视频一区二区三区| 欧美日韩精品免费看| 麻豆精品视频在线观看| 欧美在线观看视频在线| 亚洲视频一二三| 99re66热这里只有精品3直播| 欧美激情女人20p| 免费视频一区| 蘑菇福利视频一区播放| 久久久亚洲欧洲日产国码αv|