? 本周在侯捷老師的帶領(lǐng)下,我踏上學(xué)習(xí)C++的路程。作為一個(gè)寫程序還沒一年且只有C語(yǔ)言基礎(chǔ)的大學(xué)生绳匀,跟一起學(xué)習(xí)的大牛們還有很大的差距,不過(guò)從無(wú)到有還是有頗多的收獲。
? 以前在學(xué)習(xí)C語(yǔ)言時(shí)疾棵,我把注意力大多數(shù)集中在了是一門語(yǔ)言的語(yǔ)法戈钢,以及一些算法身上,然后按部就班按照老師的意思去寫一個(gè)程序是尔,而侯老師的講述更讓我意識(shí)到了一門語(yǔ)言的用途殉了,即面向?qū)ο蟮恼嬲饬x,也知道了為何以前寫程序心中沒有一種創(chuàng)造感嗜历。
?? 在第一周的學(xué)習(xí)中 宣渗,侯老師用標(biāo)準(zhǔn)庫(kù)的complex類例子為我們演示了一個(gè)類的形成。防衛(wèi)式的聲明梨州,聲明我的第一C++程序的開始痕囱。起初,我對(duì)老師一開始就展示出的class complex一頭霧水暴匠,到后面鞍恢,侯老師一層一層地揭開了他們神秘的面紗。大致如下:
? 1.? 我理解class類比了C里的結(jié)構(gòu)體每窖,只不過(guò)多出來(lái)了private部分帮掉。而函數(shù)主要放在public里,數(shù)據(jù)放在private里窒典。
?? 2. 構(gòu)造函數(shù)可以有很多個(gè)蟆炊,但是沖突之后不能重載。
? 3. 為培養(yǎng)大氣的編程風(fēng)格瀑志,構(gòu)造函數(shù)以初值列的形式書寫涩搓,如下:(深刻體會(huì)到了細(xì)節(jié)的力量)
complex (double r = 0, double i = 0)
: re (r), im (i)
{ }?
4.C++里有它獨(dú)特的傳數(shù)據(jù)方式,by reference(引用)劈猪,類似于指針卻大多數(shù)時(shí)候優(yōu)于指針昧甘,傳送者無(wú)需知道接收者是以reference接收,用起來(lái)簡(jiǎn)單方便且不容易出錯(cuò)战得,因此侯老師多次強(qiáng)調(diào)參數(shù)傳遞盡量傳引用充边,返回值傳遞盡量用引用。而當(dāng)返回的不是local object時(shí)常侦,則不能return by reference浇冰,本地變量不能引用傳出去。數(shù)據(jù)前加const聋亡。
5.老師另一強(qiáng)調(diào)的重點(diǎn)就是const肘习,不用修改的這詞是讓程序員清楚地認(rèn)識(shí)到一個(gè)參數(shù)的用途,對(duì)于以前的我可能根本不會(huì)在意這個(gè)關(guān)鍵詞杀捻,以前的我在意如何完成一個(gè)編程題井厌,完成一個(gè)任務(wù)蚓庭,而侯老師教我的,是如何完美地寫出一個(gè)程序仅仆。
6.臨時(shí)對(duì)象的壽命到下一行器赞。
7.操作符重載的例子讓我清楚地認(rèn)識(shí)到了編程為何需要完美,程序員需要考慮到用戶可能出現(xiàn)的各種情況墓拜,尤其是<<的操作符重載讓我記憶深刻:
ostream&
operator << (ostream& os, const complex& x)
{
return os << '(' << real (x) << ',' << imag (x) << ')';
}
如果讓我寫港柜,可能直接就會(huì)用void,而大牛們考慮到了用戶可能會(huì)用到cout<<c1<<c2的情況咳榜,把void改成了ostream&夏醉。編程,是一門細(xì)活涌韩。
8.友元函數(shù)能直接訪問(wèn)class中private中的數(shù)據(jù)畔柔。相同class的各個(gè)object互為友元。(其實(shí)這句我還不是很能理解)臣樱。
以上是我整理后的這周的學(xué)到的知識(shí)重點(diǎn)靶擦,可能有我遺漏未被重視的,請(qǐng)各位大牛多加指點(diǎn)雇毫,望今后的學(xué)習(xí)能多多幫助玄捕。