C++快速自學(xué)手冊
C++快速自學(xué)手冊
一.面向?qū)ο笏枷?/p>
Oop思想就是把所有的事物看做對象來處理。然后用類來建創(chuàng)建一個模型。面向?qū)ο蟮娜筇卣?,封裝、繼承、多態(tài)。
注釋:有的書上寫函數(shù)?有的書上寫方法,他們的意思都是一樣的,還有的書上寫屬性,有的寫成員,其實(shí)都以一個意思,不要被搞混了。
二.C++語法
1.?類的寫法基本上跟C語言的結(jié)構(gòu)體一樣,比c的結(jié)構(gòu)體多了可以寫方法(也叫函數(shù))的功能。但是c語言的結(jié)構(gòu)體不能有方法(函數(shù))。C++中用class替換struct?,class里面默認(rèn)是私有的而struct默認(rèn)是公有的.
2.構(gòu)造函數(shù):每個類都有一個構(gòu)造函數(shù),如果不寫,那么系統(tǒng)會給你自動生成一個默認(rèn)的構(gòu)造函數(shù)(也就是沒有任何參數(shù)的構(gòu)造函數(shù)),但是里面沒有任何的代碼。
3.析構(gòu)函數(shù):在類被回收是系統(tǒng)調(diào)用的,基本上同構(gòu)造函數(shù)一樣,如果類中沒有析構(gòu)函數(shù),那么系統(tǒng)會給我們分配一個,但是析構(gòu)函數(shù)不能有?返回值和參數(shù)。
4.函數(shù)重載:在一個類中?函數(shù)名相同的兩個函數(shù),但他們的參數(shù)類型?和數(shù)量不同或參數(shù)類型的位置不一樣,就叫做函數(shù)重載。
5.類的繼承:一個類繼承另外一個類的寫法是?class?A?:?public?class?B。這里面的冒號的作用就是左繼承右,英文單詞是extends?。如果一個類繼承另外一個類,那么這個類就擁有了繼承那個類的所有屬性和方法。
6.訪問修飾符:C++的訪問修飾符一共有3個,public、protected、private?。
先介紹public?:他的訪問作用域是整個程序,在什么地方都能直接訪問。Proetcted的訪問限制是只有繼承下來的子類也叫派生類才可以訪問。Private修飾符只能是自己的類才能訪問。
7.友元修飾符friend?:友元修飾符只能加在方法和類的名字的前面,還必須在類中使用。他的作用是讓一個類可以訪問另外一個類的所有屬性和方法,包括私有的。例子:
Class?A{
firend?class?B;
Private:
Static?Int?no;
Public?:
Void?show(){}
};
Class?B{
public:
void?display(){
cout<<A::no<<endl;
}?
};
例2:
class?A{
private:
int?no;
firend?void?show();
};?
void?show(){
cout<<no<<endl;
}
8.運(yùn)算符重載:C++為我們提供了運(yùn)算符重載的功能,那運(yùn)算符重載的作用是實(shí)現(xiàn)類與類之間的加減乘除等。這樣讓我們操作類更方便。運(yùn)算符重載的語法?void?operator運(yùn)算符(參數(shù))。這里面要注意的是運(yùn)算符重載在是有限制的能重載的(?X?÷?+?-?=?++?――?<<??>>)不能重載的基本上都是邏輯運(yùn)算符。重載是的運(yùn)算符不能把它原先的意思改變。
9.內(nèi)聯(lián)函數(shù):他的功能是為了簡化重復(fù)次數(shù)比較多的代碼段。
10.函數(shù)模板:
template
type?sum(type?x,type?y){
return?x+y;
}
在調(diào)用時?type類型必須是一樣的。
11.虛函數(shù)和純虛函數(shù)
虛函數(shù)的作用是:讓父類能訪問子類重寫過的函數(shù)。這里要注意的是構(gòu)造函數(shù)不能是虛函數(shù),而析構(gòu)函數(shù)可以是虛函數(shù)。如果在父類中的一個函數(shù)是虛函數(shù),那么子類可以不用寫virtual關(guān)鍵字,那么子類重寫過的這個函數(shù)也是虛函數(shù),但是建議在重寫的時候加上virtual
關(guān)鍵字,以顯示其父類是虛函數(shù)。
純虛函數(shù)是一種特殊的虛函數(shù),它的一般格式如下:
? class?
? virtual?<類型>
? …?
};?
在許多情況下,在基類中不能對虛函數(shù)給出有意義有實(shí)現(xiàn),而把它說明為純虛函數(shù),它的實(shí)現(xiàn)留給該基類的派生類去做。這就是純虛函數(shù)的作用。
1、為了方便使用多態(tài)特性,我們常常需要在基類中定義虛擬函數(shù)。?
2、在很多情況下,基類本身生成對象是不合情理的。例如,水果作為一個基類可以派生出蘋果、香蕉等子類,但水果本身生成對象明顯不合常理。