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

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

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

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

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
日韩av电影在线网| 91日韩在线视频| 久久久久九九九九| 欧美精品久久久久久久| 国产日韩欧美91| 国产丝袜一区视频在线观看| 精品呦交小u女在线| 国产一区二区在线播放| 中文字幕精品国产| 国产精品海角社区在线观看| 亚洲精品一区二区三区婷婷月| 911国产网站尤物在线观看| 久久久亚洲福利精品午夜| 久久久电影免费观看完整版| 亚洲一区中文字幕| 亚洲自拍偷拍第一页| 国产精品欧美日韩久久| 在线国产精品播放| 日本免费在线精品| 国产精品毛片a∨一区二区三区|国| 国产精品亚洲网站| 91精品久久久久久久久| 欧美黄色小视频| 欧洲中文字幕国产精品| 欧美激情免费视频| 96国产粉嫩美女| 第一福利永久视频精品| 欧美在线激情视频| 欧美精品福利视频| 精品电影在线观看| 俺去了亚洲欧美日韩| 最新69国产成人精品视频免费| 91av视频在线| 日韩国产欧美精品在线| 成人激情视频在线| 亚洲黄色在线看| 国产香蕉精品视频一区二区三区| 国产一区二区三区在线观看网站| 日本精品va在线观看| 久久久免费观看视频| 国产精品美女av| 欧美日韩在线视频一区| 一区二区成人av| 国产精品老女人精品视频| www.日韩av.com| 欧美日韩国产精品一区二区不卡中文| 国产美女精品视频| 国产精品中文字幕久久久| 亚洲成人久久久久| 在线电影av不卡网址| 久久精品2019中文字幕| 国产一区二区三区在线观看网站| 久久久999精品| 国产z一区二区三区| 伊人男人综合视频网| 欧美日韩亚洲一区二区三区| 久久久999成人| 欧美激情伊人电影| 亚洲午夜精品久久久久久久久久久久| 亚洲第一福利网站| 欧美丰满少妇xxxxx| 日本欧美黄网站| 久久频这里精品99香蕉| 欧美日韩国产精品一区| 亚洲999一在线观看www| 日韩av日韩在线观看| 欧美成人全部免费| 都市激情亚洲色图| 欧美激情在线一区| 668精品在线视频| 欧美xxxx做受欧美| 精品国内产的精品视频在线观看| 久久久久久国产精品美女| 国产成人jvid在线播放| 国产精品爽黄69| 国产亚洲精品日韩| 91精品国产综合久久香蕉的用户体验| 国产一区二区丝袜高跟鞋图片| 久久久久久久久久久成人| 国产亚洲日本欧美韩国| 欧美激情xxxx| 亚洲人成亚洲人成在线观看| 欧美黄色小视频| 国产欧美一区二区三区久久人妖| 人人爽久久涩噜噜噜网站| 成人亚洲激情网| 在线视频欧美日韩精品| 国产欧美精品日韩精品| 久久久久九九九九| 国产999精品久久久| 亚洲剧情一区二区| 亚洲天堂男人天堂| 欧美疯狂做受xxxx高潮| 91av在线影院| 欧美日韩国产中文字幕| 免费不卡在线观看av| 亚洲人精选亚洲人成在线| 久久久女女女女999久久| 欧美激情免费看| 欧美精品在线播放| 亚洲免费小视频| 欧美黄色免费网站| 欧美与欧洲交xxxx免费观看| 亚洲精品久久久久久下一站| 国产精品网红直播| 欧美在线观看www| 欧美性猛交xxxx乱大交3| 国产日产欧美a一级在线| 国产精品福利无圣光在线一区| 在线播放日韩av| 国产精品啪视频| 成人做爰www免费看视频网站| 亚洲影院色无极综合| 亚洲高清免费观看高清完整版| 亚洲欧美激情另类校园| 欧美成年人视频网站欧美| 91高潮在线观看| 菠萝蜜影院一区二区免费| 精品一区电影国产| 欧美日韩成人网| 国产精品99一区| 欧美另类老肥妇| 夜色77av精品影院| 久久久精品视频成人| 成人av在线网址| 亚洲国产精品久久久久秋霞不卡| 成人a在线观看| 日本欧美中文字幕| 亚洲第一中文字幕在线观看| 日韩av在线导航| 伊人久久大香线蕉av一区二区| 国产成人福利夜色影视| 91精品啪在线观看麻豆免费| 久久久99久久精品女同性| 亚洲国产精品免费| 国产伊人精品在线| 国产精品第一页在线| 亚洲自拍在线观看| 亚洲免费av电影| 欧美裸体xxxx极品少妇软件| 久热精品视频在线观看| 欧美精品久久久久久久免费观看| 亚洲国产精品久久91精品| 日韩欧美精品免费在线| 91精品国产91久久| 日韩欧美一区二区三区久久| 一本色道久久综合狠狠躁篇怎么玩| 亚洲天堂成人在线| 日韩欧美在线观看视频| 欧美理论电影在线播放| 成人久久一区二区| 欧美国产一区二区三区| 亚洲成成品网站| 九九精品视频在线| 亚洲人成伊人成综合网久久久| 国产精品黄色影片导航在线观看| 久久精品久久久久| 国产视频精品va久久久久久| 国产性猛交xxxx免费看久久| 欧美高清激情视频| 欧美成人精品在线播放| 精品成人久久av| 久久成人在线视频| 91精品美女在线|