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

平凡的天才

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

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

Posted on 2007-03-04 11:32 平凡的天才 閱讀(4816) 評論(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>
            蜜桃av一区二区三区| 亚洲大胆人体在线| 性做久久久久久久免费看| 一本色道久久综合狠狠躁篇怎么玩| 亚洲欧洲日夜超级视频| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美二区乱c少妇| 日韩小视频在线观看| 亚洲一区二区免费| 欧美一乱一性一交一视频| 久久精品亚洲| 欧美日韩日本国产亚洲在线| 国产精品―色哟哟| 一区二区在线免费观看| 亚洲久久一区二区| 小处雏高清一区二区三区| 久久久一二三| 99国产精品一区| 午夜影院日韩| 欧美国产一区在线| 国产一区二区看久久| 亚洲精品国产精品乱码不99| 亚洲免费在线| 欧美国产亚洲精品久久久8v| 亚洲无线视频| 欧美成人综合网站| 好吊妞**欧美| 午夜精品免费| 国内精品久久久久久 | 亚洲午夜国产一区99re久久| 久久精品在线观看| 国产精品二区影院| 亚洲美女视频在线免费观看| 欧美在线中文字幕| 在线中文字幕日韩| 欧美成人高清| 亚洲国产成人在线视频| 欧美在线免费视屏| 99成人在线| 欧美日韩精品系列| 亚洲国产激情| 蜜桃视频一区| 亚洲自拍另类| 国产精品久久77777| 夜夜爽www精品| 亚洲国产日韩欧美一区二区三区| 久久经典综合| 国产视频亚洲| 久久精品免费看| 亚洲免费婷婷| 国产精品资源| 欧美一区久久| 欧美一级欧美一级在线播放| 国产精品久久久久久久久免费樱桃| 一本到高清视频免费精品| 亚洲大片av| 欧美精品videossex性护士| 亚洲黄色av| 亚洲国产精品福利| 欧美大片在线观看一区| 日韩亚洲欧美一区二区三区| 亚洲精品一区在线观看香蕉| 欧美激情一区二区三级高清视频 | 午夜一区不卡| 午夜精品久久久久久久久久久久久| 国产精品日韩欧美一区二区三区| 欧美亚洲一区| 欧美一区二区三区在线播放| 国内外成人免费视频| 久久天天躁夜夜躁狠狠躁2022| 欧美影视一区| 亚洲精品日韩综合观看成人91| 亚洲精品国产精品久久清纯直播| 欧美电影在线播放| 亚洲午夜黄色| 久久国产精品久久精品国产| 亚洲福利视频二区| 亚洲精品日韩欧美| 国产农村妇女毛片精品久久麻豆| 久久久免费精品视频| 美女视频网站黄色亚洲| 亚洲婷婷在线| 欧美一区亚洲二区| 亚洲日本无吗高清不卡| 一区二区三区视频在线播放| 欧美天天视频| 亚洲美女黄网| 国产精品日韩| 欧美激情久久久久久| 欧美日韩一卡| 久久亚洲精品一区| 欧美日韩免费视频| 久久久在线视频| 欧美日韩一区二区三区在线看| 久久国产精品高清| 欧美精品午夜| 久久嫩草精品久久久久| 欧美—级高清免费播放| 欧美一级成年大片在线观看| 美女视频一区免费观看| 欧美在线视频一区二区| 欧美高清视频| 久久在线免费| 国产精品国产三级国产aⅴ浪潮 | 国产精品porn| 欧美激情aⅴ一区二区三区| 国产精品一区二区久久精品| 亚洲电影免费观看高清完整版在线观看| 国产精品久久毛片a| 欧美成人亚洲成人| 国产亚洲日本欧美韩国| 一区二区日本视频| 9l国产精品久久久久麻豆| 久久精品国产久精国产思思| 午夜精品久久久久久99热软件| 欧美刺激午夜性久久久久久久| 久久久久欧美精品| 国产女主播一区二区三区| 99视频日韩| 99精品欧美一区二区三区| 久久一区激情| 久久中文精品| 精品二区视频| 久久国产精品99精品国产| 欧美一区国产二区| 国产精品人人做人人爽人人添| 亚洲免费观看高清完整版在线观看| 亚洲福利视频网站| 久久九九热re6这里有精品| 久久久精品一品道一区| 国产日韩av在线播放| 午夜在线一区二区| 欧美专区中文字幕| 国产精品一区视频| 亚洲欧美精品在线| 欧美一区二区视频97| 国产老女人精品毛片久久| 亚洲一区二区综合| 欧美在线播放一区二区| 国产日韩在线亚洲字幕中文| 亚洲综合色激情五月| 久久久精品国产一区二区三区| 国产性色一区二区| 久久久国产精品一区二区中文 | 在线视频成人| 欧美激情视频一区二区三区免费 | 久久蜜桃精品| 激情综合色综合久久| 久久人体大胆视频| 你懂的国产精品| 一区二区三区国产在线观看| 欧美日韩亚洲网| 亚洲欧美日本日韩| 免费h精品视频在线播放| 日韩视频在线一区| 国产精品久久久久久久久免费 | 国产乱码精品一区二区三区忘忧草| 亚洲一区三区电影在线观看| 久久九九久久九九| 亚洲精品在线免费观看视频| 欧美午夜视频| 久久精品国产综合| 亚洲人精品午夜| 久久se精品一区精品二区| 在线精品视频一区二区| 欧美日韩视频一区二区| 久久aⅴ国产紧身牛仔裤| 亚洲精品国产精品国自产观看| 欧美在线播放一区二区| 亚洲精品乱码久久久久久| 国产精品一区免费视频| 欧美成人免费全部| 亚久久调教视频| 亚洲精品社区| 免费成人你懂的| 亚洲欧美一区二区原创| 亚洲精品久久久久久久久| 国产日韩1区| 国产精品成人久久久久| 牛牛国产精品| 久久激情五月婷婷| 亚洲一区二区日本| 亚洲成色精品| 久久久久久久综合色一本| 亚洲综合精品| 亚洲美女网站| 在线日韩欧美视频| 国产一区二区三区免费不卡| 欧美日韩一区二区在线| 欧美成人精品福利| 久久综合激情| 久久精品亚洲乱码伦伦中文 | 猫咪成人在线观看| 久久精品综合一区| 午夜欧美视频| 亚洲一卡二卡三卡四卡五卡| 亚洲日本欧美在线| 91久久精品久久国产性色也91 | 国产精品免费视频xxxx| 欧美日韩一区在线视频|