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

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

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

2019-11-14 09:52:25
字體:
來源:轉載
供稿:網友

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
欧美性猛交xxxxx水多| 国产视频精品久久久| 国产91精品青草社区| 日韩欧美精品免费在线| 日本国产一区二区三区| 久久久电影免费观看完整版| 亚洲аv电影天堂网| 日韩电影中文字幕在线| 日韩中文字幕免费视频| 久久99精品久久久久久青青91| 高清日韩电视剧大全免费播放在线观看| 欧美成人精品一区| 久久久精品中文字幕| 精品二区三区线观看| 国产精品一区二区三区久久| 亚洲国产又黄又爽女人高潮的| 国产日韩精品综合网站| 久久久久久这里只有精品| 国产精品国产三级国产aⅴ浪潮| 欧美激情精品久久久久久变态| 日本国产精品视频| 日本精品视频在线播放| 亚洲乱码国产乱码精品精| 韩国三级电影久久久久久| 日韩在线观看av| 久久亚洲精品毛片| 国产亚洲一区二区在线| 国产精品一久久香蕉国产线看观看| 国产91露脸中文字幕在线| 久久99视频免费| 欧美猛交ⅹxxx乱大交视频| 国产一级揄自揄精品视频| 亚洲大胆人体在线| 日韩欧美在线网址| 欧美激情va永久在线播放| 最近2019中文字幕一页二页| 欧美在线亚洲在线| 欧美精品久久一区二区| 亚洲精品国产精品乱码不99按摩| 永久免费毛片在线播放不卡| 日韩成人在线电影网| 国产欧美在线播放| 国内偷自视频区视频综合| 欧美激情精品久久久久久黑人| 日韩av中文字幕在线免费观看| 亚洲国产精彩中文乱码av在线播放| 人人澡人人澡人人看欧美| 亚洲理论在线a中文字幕| 尤物九九久久国产精品的分类| 欧美激情视频三区| 亚洲最新av在线| 日韩在线观看免费高清完整版| 最近2019年日本中文免费字幕| 九色精品免费永久在线| 亚洲人成免费电影| 日韩欧美亚洲一二三区| 日韩精品极品毛片系列视频| 国内精品在线一区| 俺去了亚洲欧美日韩| 丝袜一区二区三区| 国产视频精品在线| 高清日韩电视剧大全免费播放在线观看| 日韩av电影手机在线| 久久五月情影视| 欧美成人精品激情在线观看| 国产精品露脸自拍| 国产精品日韩欧美大师| 3344国产精品免费看| 国产丝袜精品视频| 久久五月天综合| 国产激情视频一区| 欧美在线观看网址综合| 26uuu久久噜噜噜噜| 欧美黑人国产人伦爽爽爽| 欧美成人全部免费| 欧美激情视频在线免费观看 欧美视频免费一| 在线观看久久av| 欧美日韩在线观看视频| 97在线看福利| 亚洲二区在线播放视频| 亚洲一区二区免费在线| 精品久久久久久久中文字幕| 亚洲字幕一区二区| 国产成人精品久久二区二区| 国产99久久精品一区二区 夜夜躁日日躁| 欧美日韩亚洲精品一区二区三区| 中文字幕久精品免费视频| 亲子乱一区二区三区电影| 亚洲精品免费av| 亚洲人午夜色婷婷| 亚洲bt天天射| 91热福利电影| 日韩在线视频网| 精品久久久免费| 78m国产成人精品视频| 亚洲欧洲美洲在线综合| 亚洲欧洲日本专区| 欧美日韩国产成人在线| 亚洲qvod图片区电影| 久久精品视频va| 国产男人精品视频| 久久久久久久久电影| 国产成人精品久久久| 国产一区二区动漫| 一区二区成人精品| 久久久99久久精品女同性| 久久久国产一区二区三区| 黑人与娇小精品av专区| 5566成人精品视频免费| 欧美日韩中文字幕| 国产精品十八以下禁看| 日韩欧美精品在线观看| 一区二区av在线| 亚洲第一中文字幕在线观看| 久久99精品久久久久久噜噜| 国产精品人成电影在线观看| 欧美高跟鞋交xxxxxhd| 成人黄色av免费在线观看| 精品视频久久久久久| 免费成人高清视频| 亚洲视频777| 亚洲第一免费播放区| 成人h片在线播放免费网站| 成人性生交大片免费看小说| 欧美激情精品久久久久| 日本成人黄色片| 日韩欧美成人免费视频| 中文字幕日韩综合av| 欧美性猛交xxxx富婆| 久久综合伊人77777蜜臀| 亚洲一二三在线| 伊人av综合网| 日本不卡高字幕在线2019| 国产成人精品久久亚洲高清不卡| 欧美高清videos高潮hd| 亚洲三级免费看| 国产视频在线观看一区二区| 26uuu亚洲伊人春色| 高清欧美性猛交xxxx| 97av在线视频| 欧美猛交ⅹxxx乱大交视频| 国产精品一香蕉国产线看观看| 欧美国产第二页| 亚洲色图50p| 亚州成人av在线| 欧美一区二区三区免费视| 日韩美女写真福利在线观看| 国产91色在线播放| 久久av.com| 日韩视频欧美视频| 欧美第一黄色网| 国产日韩欧美在线视频观看| 日本在线观看天堂男亚洲| 97精品在线观看| 亚洲欧美制服中文字幕| 久久午夜a级毛片| 亚洲一二在线观看| 91高清在线免费观看| 亚洲精品日韩丝袜精品| 992tv成人免费影院| 国产精品色悠悠| 日韩在线视频观看| 热99精品只有里视频精品| 日韩欧美中文免费|