課程內(nèi)容:
1、 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)知識(shí)(識(shí)記)
2、 基本程序結(jié)構(gòu)(綜合應(yīng)用)
3、 類型修飾符(領(lǐng)會(huì))
4、 函數(shù)原型(綜合應(yīng)用)
5、 內(nèi)聯(lián)函數(shù)(綜合應(yīng)用)
6、 引用(綜合應(yīng)用)
7、 動(dòng)態(tài)內(nèi)存分配(簡(jiǎn)單應(yīng)用)
8、 編譯指令(領(lǐng)會(huì))
9、 改變習(xí)慣重新思考(識(shí)記)
1.1 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)知識(shí):
程序語言:本身實(shí)際上是對(duì)一個(gè)現(xiàn)實(shí)問題的描述;其發(fā)展的根本問題在于如何更加接近人的自然思維。(機(jī)器->匯編->高級(jí)語言;面向過程->面向?qū)ο螅?BR> 面向?qū)ο螅?BR> 一種軟件方法(方法學(xué)),而不僅僅限于程序設(shè)計(jì)語言,更重要的是如何看待世界。
基本思想:從現(xiàn)實(shí)世界中客觀存在的事務(wù)(對(duì)象)出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式。
面向?qū)ο蟪绦蛟O(shè)計(jì)語言:
定義:機(jī)器實(shí)現(xiàn)的定義。
數(shù)據(jù)和操作在一起,內(nèi)存塊可以復(fù)制副本
對(duì)象間通過函數(shù)調(diào)用實(shí)現(xiàn)通信;對(duì)象的繼承
關(guān)鍵要素:
抽象:忽略事物的非本質(zhì)特性,只注意與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性;把具有共同性質(zhì)的事物劃為一類,得到一個(gè)抽象的概念。
封裝:將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)的操作集合組裝在一起,形成一個(gè)能動(dòng)的實(shí)體,也就是對(duì)象。(意義:對(duì)象集中而完整的描述并對(duì)應(yīng)一個(gè)具體的事物,封裝的信息隱蔽作用反映了事物的相對(duì)獨(dú)立性;減少“波動(dòng)效應(yīng)”。副作用:增加了許多只負(fù)責(zé)讀寫的服務(wù)。)
繼承:特殊類的對(duì)象擁有其一般類的對(duì)象的全部屬性與服務(wù),稱作特殊類對(duì)一般類的繼承。
多態(tài):一般類中定義的屬性或服務(wù)被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。(目前不要求OOPL支持)
C++語言的來龍去脈:對(duì)C語言進(jìn)行面向?qū)ο蟮臄U(kuò)展。一種混合型OOPL。
C語言的一個(gè)超集,語法基本使用C的語法,引入了新的概念
支持OO的特性
1.2 C++基本程序結(jié)構(gòu):討論C++對(duì)C的一些改進(jìn)
風(fēng)格:
1) 輸入輸出:cin和cout代替printf, iostream.h代替stdio.h,更加方便。
2) 注釋:“//”的引入
3) 使用const(代替無參數(shù)宏)和內(nèi)聯(lián)函數(shù)(代替有參數(shù)宏)代替宏定義
4) 函數(shù)原型(更強(qiáng)的編譯時(shí)刻的檢查)和缺省參數(shù)(方便函數(shù)調(diào)用、減少錯(cuò)誤)
5) 新的動(dòng)態(tài)內(nèi)存分配函數(shù)new/delete:使用上更加簡(jiǎn)單
6) 新的換行符 — endl
內(nèi)聯(lián)函數(shù)inline:
1) 不是用函數(shù)調(diào)用的機(jī)制,編譯遇到時(shí)簡(jiǎn)單的替換而已,省去了函數(shù)調(diào)用的額外開銷
2) 使用宏定義的副作用:
# define f (x) (x+1); 在后面使用 f(1)展開成:(x) (x+1) (1),報(bào)編譯錯(cuò),但容易發(fā)現(xiàn)
參數(shù)中有表達(dá)式:
# define floor(x,b) x>=b?0:1,
調(diào)用:if(floor(a&0x0f,0x07)) // ...
展開成:if (a&0x0f>0x07?0:1)... ;&優(yōu)先級(jí)低于>,產(chǎn)生錯(cuò)誤。
難發(fā)現(xiàn),好解決――加括號(hào)
#define band(x) (((x)>5 && (x)<10) ? (x) : 0)
下面的執(zhí)行結(jié)果如何?
for(int i = 4; i < 11; i++) {
int a = i;
out << "a = " << a << endl << '\t';
out << "band(++a)=" << band(++a) << endl;
out << "\t a = " << a << endl; }
展開后會(huì)影響到a的值(++a)。
這一點(diǎn)和函數(shù)調(diào)用不同(函數(shù)一般傳值)。
宏沒有作用域的問題
引用:
1) 使引用和原來定義的變量一樣無區(qū)別的操作內(nèi)存的某一空間。
2) 主要用途:建立函數(shù)參數(shù)傳遞的引用傳遞方式,不必使用指針;另一個(gè)用途:返回引用的函數(shù),用于賦值運(yùn)算符的左邊。
3) 兩種情況下引用的是臨時(shí)變量:對(duì)常量(或const修飾的變量)的引用;引用類型和初始化時(shí)使用的變量類型不一致。
4) 定義返回引用了函數(shù)時(shí),不要返回局部變量的引用。
編譯指令:不是C++的一部分,提供給編譯器使用
1) 嵌入指令:# include / # include “filename”
2) 宏定義:# define 宏名 替換正文
3) 條件編譯指令:# if, # else, # endif, #defined
1、 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)知識(shí)(識(shí)記)
2、 基本程序結(jié)構(gòu)(綜合應(yīng)用)
3、 類型修飾符(領(lǐng)會(huì))
4、 函數(shù)原型(綜合應(yīng)用)
5、 內(nèi)聯(lián)函數(shù)(綜合應(yīng)用)
6、 引用(綜合應(yīng)用)
7、 動(dòng)態(tài)內(nèi)存分配(簡(jiǎn)單應(yīng)用)
8、 編譯指令(領(lǐng)會(huì))
9、 改變習(xí)慣重新思考(識(shí)記)
1.1 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)知識(shí):
程序語言:本身實(shí)際上是對(duì)一個(gè)現(xiàn)實(shí)問題的描述;其發(fā)展的根本問題在于如何更加接近人的自然思維。(機(jī)器->匯編->高級(jí)語言;面向過程->面向?qū)ο螅?BR> 面向?qū)ο螅?BR> 一種軟件方法(方法學(xué)),而不僅僅限于程序設(shè)計(jì)語言,更重要的是如何看待世界。
基本思想:從現(xiàn)實(shí)世界中客觀存在的事務(wù)(對(duì)象)出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式。
面向?qū)ο蟪绦蛟O(shè)計(jì)語言:
定義:機(jī)器實(shí)現(xiàn)的定義。
數(shù)據(jù)和操作在一起,內(nèi)存塊可以復(fù)制副本
對(duì)象間通過函數(shù)調(diào)用實(shí)現(xiàn)通信;對(duì)象的繼承
關(guān)鍵要素:
抽象:忽略事物的非本質(zhì)特性,只注意與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性;把具有共同性質(zhì)的事物劃為一類,得到一個(gè)抽象的概念。
封裝:將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)的操作集合組裝在一起,形成一個(gè)能動(dòng)的實(shí)體,也就是對(duì)象。(意義:對(duì)象集中而完整的描述并對(duì)應(yīng)一個(gè)具體的事物,封裝的信息隱蔽作用反映了事物的相對(duì)獨(dú)立性;減少“波動(dòng)效應(yīng)”。副作用:增加了許多只負(fù)責(zé)讀寫的服務(wù)。)
繼承:特殊類的對(duì)象擁有其一般類的對(duì)象的全部屬性與服務(wù),稱作特殊類對(duì)一般類的繼承。
多態(tài):一般類中定義的屬性或服務(wù)被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。(目前不要求OOPL支持)
C++語言的來龍去脈:對(duì)C語言進(jìn)行面向?qū)ο蟮臄U(kuò)展。一種混合型OOPL。
C語言的一個(gè)超集,語法基本使用C的語法,引入了新的概念
支持OO的特性
1.2 C++基本程序結(jié)構(gòu):討論C++對(duì)C的一些改進(jìn)
風(fēng)格:
1) 輸入輸出:cin和cout代替printf, iostream.h代替stdio.h,更加方便。
2) 注釋:“//”的引入
3) 使用const(代替無參數(shù)宏)和內(nèi)聯(lián)函數(shù)(代替有參數(shù)宏)代替宏定義
4) 函數(shù)原型(更強(qiáng)的編譯時(shí)刻的檢查)和缺省參數(shù)(方便函數(shù)調(diào)用、減少錯(cuò)誤)
5) 新的動(dòng)態(tài)內(nèi)存分配函數(shù)new/delete:使用上更加簡(jiǎn)單
6) 新的換行符 — endl
內(nèi)聯(lián)函數(shù)inline:
1) 不是用函數(shù)調(diào)用的機(jī)制,編譯遇到時(shí)簡(jiǎn)單的替換而已,省去了函數(shù)調(diào)用的額外開銷
2) 使用宏定義的副作用:
# define f (x) (x+1); 在后面使用 f(1)展開成:(x) (x+1) (1),報(bào)編譯錯(cuò),但容易發(fā)現(xiàn)
參數(shù)中有表達(dá)式:
# define floor(x,b) x>=b?0:1,
調(diào)用:if(floor(a&0x0f,0x07)) // ...
展開成:if (a&0x0f>0x07?0:1)... ;&優(yōu)先級(jí)低于>,產(chǎn)生錯(cuò)誤。
難發(fā)現(xiàn),好解決――加括號(hào)
#define band(x) (((x)>5 && (x)<10) ? (x) : 0)
下面的執(zhí)行結(jié)果如何?
for(int i = 4; i < 11; i++) {
int a = i;
out << "a = " << a << endl << '\t';
out << "band(++a)=" << band(++a) << endl;
out << "\t a = " << a << endl; }
展開后會(huì)影響到a的值(++a)。
這一點(diǎn)和函數(shù)調(diào)用不同(函數(shù)一般傳值)。
宏沒有作用域的問題
引用:
1) 使引用和原來定義的變量一樣無區(qū)別的操作內(nèi)存的某一空間。
2) 主要用途:建立函數(shù)參數(shù)傳遞的引用傳遞方式,不必使用指針;另一個(gè)用途:返回引用的函數(shù),用于賦值運(yùn)算符的左邊。
3) 兩種情況下引用的是臨時(shí)變量:對(duì)常量(或const修飾的變量)的引用;引用類型和初始化時(shí)使用的變量類型不一致。
4) 定義返回引用了函數(shù)時(shí),不要返回局部變量的引用。
編譯指令:不是C++的一部分,提供給編譯器使用
1) 嵌入指令:# include
2) 宏定義:# define 宏名 替換正文
3) 條件編譯指令:# if, # else, # endif, #defined