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

首頁 > 學院 > 開發設計 > 正文

C++如何設計一個不含指針的類 (Boolan筆記第一周)

2019-11-14 08:55:35
字體:
來源:轉載
供稿:網友

C++設計一個不含指針的類還是比較簡單的,因為它不需要考慮一下三大因素(也叫Big Three): destructor copy constructor copy assignment Operator 為什么呢?因為不含指針的話,淺拷貝(memberwise copy)就可以了,不會涉及到同一塊內存被多個對象指向的問題,析構的時候也不需要考慮內存的操作。

舉例complex類如下: *class complex //class head { //class body public: complex (double r = 0, double i = 0): re (r), im (i) { } complex& operator += (const complex&); double real () const { return re; } double imag () const { return im; } PRivate: double re, im; friend complex& __doapl (complex *, const complex&); };*

這里有幾個需要注意的地方: 1) real()和imag()在類的體內定義,則自動成為inline函數。如果在體外定義,則需要顯式聲明inline才會成為inline函數。

2) friend函數本身不是類的一部分,friend是指此函數可以自由訪問該類的private成員。friend也可以用在類上面,一個類的friend類的object可以訪問該類的private成員。注意: 同一個類的各個object互為friend,這也是為什么拷貝構造函數和賦值構造函數可以實現的基礎。

friend函數有什么好處呢?因為friend函數不需要通過class來訪問,比用class函數來做效率更高。

3) complex定義了自己的缺省構造函數。 complex (double r = 0, double i = 0): re (r), im (i) { } 所謂缺省構造函數是指對象的創建不需要參數就可調用的構造函數。C++標準規定,如果構造函數沒有參數,或者構造函數的所有參數都有缺省值,則算作缺省構造函數。

如果complex沒有定義自己的缺省構造函數,C++編譯器會自動給它生成一個缺省構造函數類似, complex() {} 注意該函數什么也不做。

如果complex的缺省構造函數為complex(double r=0, double i=0): re(r), im(i) {},并且沒有其他缺省構造函數,代碼 complex c1; 會調用該構造函數,并用re和im的缺省參數。

如果complex的構造函數為complex(double r, double i): re(r), im(i) {}, 并且沒有其他缺省構造函數,代碼 complex c1; 會編譯出錯,因為編譯器不知道把什么值賦給re和im。

如果complex的缺省構造函數為complex() {}, 并且沒有其他缺省構造函數,代碼 complex c1; 會調用該缺省構造函數。

如果complex 有兩個缺省構造函數, complex() {} complex(double r=0, double i=0): re(r), im(i) {} 代碼complex c1編譯會出錯,因為編譯器不知道調用那個缺省構造函數。

如果complex有以下兩個構造函數,注意第一個為缺省構造函數,第二個不是。它們可以共存。 complex() {} complex(double r, double i): re(r), im(i) {} 代碼complex c1;編譯會通過,編譯器會采用complex() {}作為缺省構造函數。

4) 下面幾種寫法要特別注意它們的區別: complex c1(): 聲明一個名為c1的函數, 該函數返回complex類型。注意這里不是創建complex 類的對象 complex c1; //創建一個complex的一個名為c1的obj, 并且會調用complex 類中的缺省構造函數,其缺省參數為(0,0). complex(); //創建一個complex的臨時對象,此處會調用complex 類中的缺省構造函數,同樣,int()也是創建一個int的臨時對象 complex c1=complex(); //創建一個complex的臨時對象,并賦給c1,此處會調用賦值構造函數 complex *p=new complex();//創建一個complex的obj,這里會調用complex類中的缺省構造函數,并用指針p指向它。

5) complex重載了+=操作符。操作符重載可以看成是一個特殊的函數,給C++編程帶來很大便利。

操作符重載可以是類成員函數,也可以是非類成員函數。如果是object自身與complex的其它object相加,可寫成類成員函數,如上面的這種情況; 但如果不是object自身與complex其他object相加,則不能寫成類成員函數。

如果是成員函數的話,默認第一個參數是this指針,通常不寫。注意:操作符重載一定是作用在左邊的操作符。

6) 上面operator+重載函數參數采用傳引用。 對于函數入口參數,盡量用傳引用,因為傳值的話,value會放進stack,應該盡量少用。 另外,對于函數返回值也是盡量返回reference,但如果函數返回的是在棧上分配的一個local變量或object,則不能返回reference,因為該local變量或obj已經被刪除。

7) 上面operator+的入口參數加了const。對于函數入口參數,如果函數不會改變這個參數,則該參數可以加const。 另外,如果某類函數不會改變函數的數據成員,則可以在函數名后加const,比如上面的real()和imag()函數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产午夜精品久久久| 亚洲人成网站999久久久综合| 久久99热这里只有精品国产| 亚洲欧美国产精品va在线观看| 亚洲国产一区二区三区在线观看| 亚洲aa中文字幕| 亚洲国产精品一区二区久| 久久综合88中文色鬼| 国产精品美女999| 538国产精品一区二区免费视频| 国产亚洲欧美日韩一区二区| 操人视频在线观看欧美| 国产精品成久久久久三级| 国产精品久久久久久久久久| 日韩精品在线播放| 欧美电影免费播放| 精品国产欧美一区二区三区成人| 亚洲奶大毛多的老太婆| 久久亚洲精品网站| 91天堂在线视频| 欧美老女人www| 久久久久久九九九| 国产精品羞羞答答| 精品精品国产国产自在线| 日韩精品福利在线| 日本欧美一二三区| 欧美激情一级二级| 97成人精品区在线播放| 欧美成人在线免费视频| 亚洲国产成人91精品| 色综合久久久888| 欧美日韩国产黄| 亚洲第一黄色网| 欧美性猛交xxxx乱大交蜜桃| 国产精品成人一区二区| 国产精品第七影院| 亚洲国产精品嫩草影院久久| 亚洲高清久久网| 日韩精品亚洲元码| 日韩精品视频免费专区在线播放| 91av福利视频| 欧美裸体xxxx极品少妇软件| 国产日韩精品在线播放| 91精品91久久久久久| 热草久综合在线| 日韩欧美第一页| 亚洲天堂男人天堂| 95av在线视频| 国内精久久久久久久久久人| 欧美日韩免费在线观看| 亚洲乱码av中文一区二区| 欧美一区二区视频97| 亚洲第一精品夜夜躁人人爽| 91系列在线观看| 91中文在线视频| 欧美精品aaa| 91在线看www| 亚洲性日韩精品一区二区| 久久久国产精品视频| 性色av一区二区三区免费| 久久精品国产久精国产思思| 欧美精品videofree1080p| 亚洲人成在线观看网站高清| 91精品国产综合久久香蕉922| 97在线看免费观看视频在线观看| 亚洲一级片在线看| 最好看的2019年中文视频| 色吧影院999| 自拍偷拍亚洲欧美| 国产v综合ⅴ日韩v欧美大片| 国产一区二区三区免费视频| 欧美日韩精品在线观看| 亚洲国产精品系列| www.久久草.com| 日韩毛片在线看| 国产成人啪精品视频免费网| 中文综合在线观看| 国产亚洲精品激情久久| 琪琪亚洲精品午夜在线| 成人性生交大片免费看小说| 国产精品久久激情| 国产精品久久久久77777| 欧美黑人极品猛少妇色xxxxx| 国产日韩欧美在线观看| 日韩高清欧美高清| 欧美激情精品久久久久久变态| 成人免费视频在线观看超级碰| 亚洲成年网站在线观看| 欧美在线亚洲在线| 中文字幕亚洲欧美日韩高清| 一区二区三区高清国产| 久久亚洲精品中文字幕冲田杏梨| 日韩专区在线观看| 91大神在线播放精品| 国模精品一区二区三区色天香| 久久久久亚洲精品国产| 欧美日韩一区二区三区在线免费观看| 欧美日韩在线看| 亚洲美女中文字幕| 欧美资源在线观看| 日韩禁在线播放| 久久久久久九九九| 日韩欧美综合在线视频| 久久久久久久久国产精品| 色婷婷**av毛片一区| 久久久久久伊人| 亚洲aa在线观看| 亚洲精品国产免费| 一本一道久久a久久精品逆3p| 狠狠色狠狠色综合日日五| 欧美成人国产va精品日本一级| 欧洲美女7788成人免费视频| 久久精品国产清自在天天线| 国产精品一区二区性色av| 精品亚洲aⅴ在线观看| 97视频在线观看免费高清完整版在线观看| 日韩欧美中文字幕在线观看| 91丝袜美腿美女视频网站| 黑人与娇小精品av专区| 91久久久在线| 日韩欧中文字幕| 92国产精品久久久久首页| 神马久久桃色视频| 欧美孕妇性xx| 8090成年在线看片午夜| 色综合伊人色综合网站| 国产精品视频一区二区三区四| 亚洲精品日韩在线| 亚洲高清一区二| 欧美另类极品videosbest最新版本| 欧美成人精品h版在线观看| 亚洲图片在区色| 亚洲福利小视频| 欧美中文字幕在线播放| 538国产精品一区二区在线| 久久中文字幕一区| 国产91成人在在线播放| 8x海外华人永久免费日韩内陆视频| 日本免费久久高清视频| 国产精品久久久久av免费| 国产做受高潮69| 久久久久99精品久久久久| 欧美日韩精品在线播放| 欧美日韩国产一中文字不卡| 亚洲人成77777在线观看网| 亚洲欧洲日韩国产| 国产精品美女免费| 国产亚洲成av人片在线观看桃| 欧美国产日韩xxxxx| 萌白酱国产一区二区| 亚洲国产欧美一区二区丝袜黑人| 欧美亚洲国产另类| 国模精品视频一区二区三区| 久久色精品视频| 国产伊人精品在线| 91青草视频久久| 欧美夫妻性生活xx| 欧美激情伊人电影| 成人午夜激情免费视频| 欧美成人免费一级人片100| 伊人久久五月天| 国模精品一区二区三区色天香| 成人自拍性视频| 日韩精品丝袜在线|