GeekBand-C++面向?qū)ο蟾呒壘幊?Lesson1

1牵触、概述

課程名稱:C++面向?qū)ο蟪绦蛟O(shè)計

1.1 課程介紹

通過這門課程你能獲得什么?

培養(yǎng)正規(guī)、大氣的編程習(xí)慣

這門課程無時無刻不在提醒你好的c++編程習(xí)慣是什么塘淑,讓人第一眼看到你的代碼就覺得你很nice。課程中會有c++編程作業(yè)蚂斤,這些作業(yè)會幫助你把這些細(xì)碎的知識點串接起來存捺。

以良好的方式編寫c++ class

按照class是否包含指針而將class分為兩大類,課程中會重點強調(diào)這兩種class的區(qū)別以及處理方法曙蒸。

作為一門c++面向?qū)ο蟪绦蛟O(shè)計課程捌治,c++ class無疑算是重點,在這里侯捷老師開門見山纽窟,在第一講中就給出了c++ class的一種經(jīng)典分法肖油,之后的大部分課程都會緊緊圍繞這個分法來講解知識。這種風(fēng)格讓我有一種提綱挈領(lǐng)地感覺臂港,更對c++ class有了一個更為清晰的認(rèn)識森枪,非常受用。

掌握class之間的3種關(guān)系-繼承趋艘、復(fù)合疲恢、委托

當(dāng)class之間具備某種關(guān)系的時候就是面向?qū)ο蟮模粗畣我籧lass就是基于對象的瓷胧,學(xué)習(xí)面向?qū)ο笠獜幕趯ο箝_始显拳,先要能寫出正確的單一class,這也是這門課程的學(xué)習(xí)順序搓萧。

1.2 推薦書籍

入門書籍:C++ Primer, The C++ Programming Language

進階書籍:Effective C++, The C++ Standard Library, STL源碼剖析

2杂数、上課內(nèi)容梳理

2.1 Header File規(guī)范

2.1.1 要具備防衛(wèi)式聲明

#ifndef __COMPLEX__

#define __COMPLEX__

.................

.................

#endif

2.1.2 基本的結(jié)構(gòu)

基本上是由一下三部分構(gòu)成的:

Forward declarations:前置聲明

class ostream;

class complex;

Class declarations:類-聲明

class complex

{

public:

complex (double r = 0, double i = 0): re (r), im (i) { }

complex& operator += (const complex&);

complex& operator -= (const complex&);

complex& operator *= (const complex&);

complex& operator /= (const complex&);

double real () const { return re; }

double imag () const { return im; }

private:

double re, im;

friend complex& __doapl (complex *, const complex&);

friend complex& __doami (complex *, const complex&);

friend complex& __doaml (complex *, const complex&);

};

Class definition:類-定義

inline complex&

complex::operator *= (const complex& r)

{

return __doaml (this, r);

}


2.2 內(nèi)聯(lián)函數(shù)

函數(shù)如果是在class body內(nèi)定義完成宛畦,便自動成為inline的候選人

2.3 訪問級別

public vs private:一般來說數(shù)據(jù)都是private屬性的,而函數(shù)是public屬性揍移,但是也并不絕對次和。

{

complex c1(2,1);

cout << c1.re; ?//不被允許,應(yīng)該使用cout << c1.real();

cout << c1.im; //不被允許那伐,應(yīng)該使用cout << c1.img();

}

2.4 構(gòu)造函數(shù)

構(gòu)造函數(shù)的完整結(jié)構(gòu)包括以下三個:

1踏施、默認(rèn)實參;2罕邀、初始列畅形;3、賦值诉探。

構(gòu)造函數(shù)會用到overloading的一些功能

在C++的內(nèi)部實現(xiàn)層面日熬,編譯器會對overloading的構(gòu)造函數(shù)賦予不同的實際名稱

例如:

?real@Complex@@QBENXZ

?real@Complex@@QAENABN@Z

2.5 Const的使用

const 保證得到的數(shù)據(jù)不被更改

double real() const {return re;}

double imag() const {return im;}


2.6 Return by value VS Return by reference (to const)

我們在編程的時候,

1肾胯、應(yīng)該首先考慮return by reference的用法竖席。

原因是:return by value有可能數(shù)據(jù)量非常大,而return by reference不會出現(xiàn)這種情況敬肚,就是4個4節(jié)毕荐。

2、要考慮reference 的對象const的屬性

3帘皿、何時可以使用return by reference东跪,何時不可以

第一參數(shù)將被改變,但是第二參數(shù)不改變的情況可以使用:

“+=”的這種情況

但是像temp object是不能使用return by reference鹰溜,因為他們返回的必定是local object虽填。


inline complex

operator + (double x, const complex& y)

{

return complex (x + real (y), imag (y));

}

inline complex

operator - (const complex& x, const complex& y)

{

return complex (real (x) - real (y), imag (x) - imag (y));

}

4、傳遞著無需知道接受者是以reference接收的

inline complex&

__doapl (complex* ths, const complex& r)

{

ths->re += r.re;

ths->im += r.im;

return *ths;

}

2.7 友元

1曹动、友元的特性是可以自由取得friend的private成員

inline complex&

__doapl (complex* ths, const complex& r)

{

ths->re += r.re;

ths->im += r.im;

return *ths;

}

2斋日、相同class的各個objects互為友元

2.8 Operator Overloading

在考慮這些函數(shù)是否應(yīng)該成為成員函數(shù),還是非成員函數(shù)的時候墓陈,要考慮函數(shù)的參數(shù)是否一定是成員類恶守。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贡必,隨后出現(xiàn)的幾起案子兔港,更是在濱河造成了極大的恐慌,老刑警劉巖仔拟,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衫樊,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機科侈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門载佳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人臀栈,你說我怎么就攤上這事蔫慧。” “怎么了权薯?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵姑躲,是天一觀的道長。 經(jīng)常有香客問我崭闲,道長肋联,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任刁俭,我火速辦了婚禮,結(jié)果婚禮上韧涨,老公的妹妹穿的比我還像新娘牍戚。我一直安慰自己,他們只是感情好虑粥,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布如孝。 她就那樣靜靜地躺著,像睡著了一般娩贷。 火紅的嫁衣襯著肌膚如雪第晰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天彬祖,我揣著相機與錄音茁瘦,去河邊找鬼。 笑死储笑,一個胖子當(dāng)著我的面吹牛甜熔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播突倍,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼腔稀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了羽历?” 一聲冷哼從身側(cè)響起焊虏,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秕磷,沒想到半個月后诵闭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡跳夭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年涂圆,在試婚紗的時候發(fā)現(xiàn)自己被綠了们镜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡润歉,死狀恐怖模狭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情踩衩,我是刑警寧澤嚼鹉,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站驱富,受9級特大地震影響锚赤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜褐鸥,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一线脚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叫榕,春花似錦浑侥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荞下,卻和暖如春伶选,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尖昏。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工仰税, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人会宪。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓肖卧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親掸鹅。 傳聞我的和親對象是個殘疾皇子塞帐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容