一 面向對象(oop)
1.封裝
2.繼承
基類---->派生類
3.多態:派生類中可能出現與基類同名的方法。
針對基類與派生類同名的方法,派生類要有自己的行爲,必須要覆蓋基類的方法。
二 虛函數
virtual funname(。。) // 基類允許實現該方法
純虛函數:virtual funname()=0 //基類不存在對該方法的實現。
一個類中包含了一個純虛函數,那麼該類叫抽象類。 抽象類不能實例該類的對象。
如果派生類也沒有去實現基類中的純虛函數,那麼該派生類也是一個抽象類。
三 多態(override)要和函數的重載(overload)區分
1.多態是在存在繼承關係的類中,看是否有相同的方法。
2.重載是在一個類中去比較。
a.參數的數據類型不同
b.參數的個數不同
c.方法名一定要相同
四. 繼承的三種方式
private:
private ---------->不能繼承
public ----------> private
protected ----------> private
public:
private ---------->不能繼承
public ---------->public
protected ---------->protected
protected:
private ---------->不能繼承
public ---------->protected
protected ---------->protected
private:只能在本類中訪問私有成員變量或私有的成員函數
public: 任何一個地方都可以訪問
protected:本類中可以訪問,具有繼承關係的類都可以訪問
五.如果非要在一個類中訪問某個類的私有變量或函數
1.採用友元函數
class A
{
friend int funname(); //該函數可以訪問A類的私有變量及私有函數
};
2.採用友元類
class A
{
friend class B; //B類可以訪問A類的私有變量及私有函數
};
六.符號重載特點:
1.只是給C++原有符號增加新的功能,並不是創建一個新的符號
2.符號優先級不能改變
3.一元符號仍然是一元符號。
符號重載的方式:
1.成員函數重載
2.友元重載(<< ,>>這兩個符號只能通過友元重載)
七.引用和指針的區別:
1.引用變量不需要開闢空間,而指針變量肯定佔用了空間
2.引用變量一定要初始化,指針變量不要求初始化
3.引用變量初始化後就不能再改變,而指針變量可以重新指向新的地址
引用一般用在函數的參數與返回值:int & fun(int &a)
八.const變量
1.const變量存在靜態全局區
2.const變量一定要初始化。
3. const int *p; // *p爲常數,p可以指向其他地址
int * const p; // 指針p爲常數,指向的地址一旦確定就不能修改,p指向的地址裏保存的值可以修改。
4.const在類中使用的特點:
a.類裏面使用const
int fun() const // 只在定義時加該關鍵字,實現不需要該關鍵字
b.對象使用const(常對象)
1.不能修改該對象中的成員變量
2.常對象只能調用常函數(因爲常函數也不修改成員變量);
九.static在類中使用
1.靜態成員變量只能用在靜態函數中
2.靜態對象只能調用靜態函數
3.靜態函數中不能調用非靜態函數
static int funname() // 只在定義時使用該關鍵字,實現時不需要
靜態變量和靜態方法是屬於類自己的,不是屬於對象的,在靜態方法中不能使用this指針。