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

平凡的天才

目的是為人類造福
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>
            国产曰批免费观看久久久| 麻豆久久婷婷| 国产精品一页| 久久精品国产一区二区三区| 久久国产精品第一页| 国内精品久久久久久| 欧美jizz19性欧美| 欧美久久久久| 亚洲欧美另类国产| 久久久777| 99亚洲视频| 亚洲欧美www| 91久久久久久久久| 亚洲调教视频在线观看| 国产日韩欧美在线播放| 麻豆精品在线播放| 欧美日韩一区二区三区四区在线观看 | 麻豆精品精品国产自在97香蕉| 亚洲日本成人网| 一本色道久久综合亚洲二区三区| 国产精品网站一区| 亚洲国产va精品久久久不卡综合| 欧美精品一区二区三区在线看午夜| 亚洲一区在线视频| 久久亚洲一区二区| 亚洲综合999| 牛牛精品成人免费视频| 午夜精品久久久久久| 午夜久久tv| 亚洲视频精选| 老色批av在线精品| 午夜一区二区三视频在线观看| 蜜臀99久久精品久久久久久软件| 亚洲男人的天堂在线观看| 久久久久久网| 香蕉久久一区二区不卡无毒影院 | 国产精品亚洲欧美| 亚洲国产精品t66y| 国产一区三区三区| 国产精品99久久久久久人| 在线日韩欧美视频| 欧美在线综合| 亚洲一区二区三区中文字幕在线| 久久综合伊人77777| 欧美在线黄色| 国产精品videosex极品| 亚洲日韩成人| 日韩网站在线| 欧美大片va欧美在线播放| 久久久久久久网站| 国产精品永久免费在线| 99精品欧美一区| 91久久国产精品91久久性色| 欧美有码在线视频| 久久国产欧美精品| 国产免费成人在线视频| 在线视频一区二区| 亚洲女同精品视频| 中文av字幕一区| 亚洲天堂av图片| 欧美日韩在线免费| 亚洲精品一区在线| 在线亚洲成人| 欧美午夜片欧美片在线观看| 日韩午夜黄色| 亚洲一区区二区| 国产精品成人在线观看| 日韩亚洲欧美中文三级| 在线天堂一区av电影| 欧美日韩在线直播| 亚洲欧美国产日韩天堂区| 亚洲欧美日韩精品久久亚洲区 | 激情六月婷婷久久| 老鸭窝亚洲一区二区三区| 欧美国产先锋| 亚洲伦理久久| 欧美三级视频在线播放| 亚洲一区二区黄色| 久久女同互慰一区二区三区| 激情成人综合| 欧美伦理在线观看| 亚洲欧美日韩一区二区| 久久婷婷一区| 亚洲人成精品久久久久| 欧美日韩黄色一区二区| 亚洲一区亚洲| 免费观看日韩av| 亚洲免费成人av电影| 国产精品海角社区在线观看| 午夜精品www| 免费观看日韩av| 一区二区三区欧美成人| 国产麻豆精品久久一二三| 久久九九免费视频| 日韩午夜黄色| 麻豆精品视频在线观看| 亚洲午夜一二三区视频| 国产亚洲va综合人人澡精品| 美国三级日本三级久久99| 一区二区三区导航| 免费日韩av| 亚洲图片自拍偷拍| 在线看国产日韩| 国产精品久久久久久久9999| 久久一区精品| 亚洲欧美国产精品桃花| 亚洲国产毛片完整版| 久久精品一区二区三区不卡牛牛 | 在线亚洲欧美专区二区| 激情欧美一区二区三区| 欧美色道久久88综合亚洲精品| 欧美一区二区三区四区在线观看地址| 亚洲国产经典视频| 久久久www| 亚洲在线观看免费| 亚洲日本一区二区| 一区二区三区在线视频播放| 国产精品theporn| 欧美成人午夜影院| 久久久人成影片一区二区三区| 正在播放日韩| 亚洲精品一区二区三区婷婷月| 欧美成年人网站| 久久精品国产96久久久香蕉| 亚洲无玛一区| 欧美私人网站| 欧美日韩国产在线| 欧美1级日本1级| 久久久亚洲成人| 久久www免费人成看片高清| 99在线|亚洲一区二区| 亚洲激情在线观看视频免费| 久久最新视频| 老司机精品视频一区二区三区| 久久aⅴ国产紧身牛仔裤| 亚洲视频久久| 亚洲一区免费网站| 亚洲免费伊人电影在线观看av| 99视频一区| 亚洲一区二区三区影院| 亚洲图中文字幕| 亚洲一级黄色| 午夜精品久久久久久99热| 亚洲欧美日韩天堂一区二区| 午夜国产一区| 久久精品水蜜桃av综合天堂| 久久av老司机精品网站导航| 欧美在线观看一区二区| 久久激情网站| 另类综合日韩欧美亚洲| 男男成人高潮片免费网站| 欧美.www| 最近中文字幕mv在线一区二区三区四区 | 国产日韩欧美一区二区| 国产一区二区三区四区| 激情综合自拍| 最新国产成人av网站网址麻豆| 亚洲三级视频| 亚洲欧美日韩高清| 欧美在线视频网站| 美女啪啪无遮挡免费久久网站| 免费久久99精品国产自| 亚洲欧洲中文日韩久久av乱码| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 中文在线一区| 欧美亚洲在线视频| 欧美gay视频激情| 一区二区免费在线观看| 久久国产精品99精品国产| 嫩草影视亚洲| 国产精品美女午夜av| 黄色国产精品| 99视频超级精品| 久久成人一区二区| 亚洲国产精品美女| 亚洲欧美中文日韩v在线观看| 久久综合电影| 国产精品久久久久久久久久ktv| 国内精品久久久久影院薰衣草 | 国产精品日韩欧美大师| 在线观看视频亚洲| 亚洲欧美一区二区视频| 蜜臀久久99精品久久久久久9| 日韩视频三区| 久久久久久久综合| 国产精品久久福利| 亚洲国产精品久久久久秋霞影院| 亚洲一区二区三区高清| 欧美不卡在线视频| 性久久久久久久久| 欧美日韩精品久久久| 国一区二区在线观看| 亚洲欧美综合网| 亚洲欧洲精品一区二区三区| 久久超碰97人人做人人爱| 国产精品久久久久天堂| 亚洲精品在线视频观看| 噜噜噜躁狠狠躁狠狠精品视频| 中日韩美女免费视频网址在线观看| 欧美成人精精品一区二区频|