C++ 面向對象編程

構造函數

拷貝構造: 用一個對象 實例化另外一個兌現的時候會進入構造

析構函數


類的成員變量 只能在構造函數初始化(靜態成員變量除外)

類的參數列表的使用:

person(int age,float height):_age(age),_height(height)

Const的用法:

1.const 修改變量 變量的值不能被修改

2.const 修飾函數的參數 表示在函數體內參數不修改

3.const 修改類的成員變量 該變量的初始化 必須要在參數列表中初始化

4.const 寫在函數的后面 “void test() const” 函數只能使用類的成員變量 不能改變

5. const 修飾類的對象時 該對象只能調用 帶有const 的函數 ??

類的強制類型轉化:

? ? ??

靜態函數 & 友元函數

?Class Preson{}

? ? 1.靜態函數 的調用(::) ?靜態函數 只能訪問靜態變量 ?只能調用靜態函數 和全局函數

? ?2.友元函數 ?friend


類的繼承

類函數的重載和覆蓋

? ?函數的覆蓋 子類的函數和父類的函數完全一樣的化 子類的函數覆蓋父類的方法

? ?父類的指針 或引用 可以指向子類的對象

rtti ? run time type information

dynamic_cast<T> ?動態類型轉換 Csub* obj= dynamic_cast<Csub*>(obj1)

當用到rtti 時Base類必須包含虛函數

虛函數(virtual )

析構&虛構造

?構造函數不能是虛函數 ?析構函數可以為虛函數

當類有派生時 要注意把Base的析構函數聲明為虛函數。

純虛函數&抽象類

? ?如果一類中包含純虛函數 則這個類為抽象類?

? ?抽象類不能被聲明和初始化 ?只能作為基類使用,如果繼承抽象類的子類沒有實現基類的純虛函數則 該子類也時抽象類。

? 純虛方法的定義

? ? ? ?virtual void FunctionName(int i)=0;


內存的使用:

? ? ?new ?delect 和?malloc free ?兩組申請內存和釋放內存的區別:

? ? ? ? ?1. new ?和 delect 是C++的內存管理api ,malloc ?free 是C的原生API 所以在C++中使用的時候要添加頭文件

? ? ? ? ?2. new 和 delect 申請和釋放內存的對象是一個類時,會調用這個類的構造函數和析構函數 ? ? malloc 和 free 不會調用 類的構造函數和析構函數

? ? ? ? ?3. malloc 和 free 申請內存的效率更高

? ? ? ? ?4. 在面象對象編程的過程中推薦使用new 和delect 來管理內存

命名空間的使用:

? ? ? 1.命名空間的定義可以進行分級定義命名空間

? ? ? 2.命名空間不建議使用為全局的(即寫在所有函數體外 ? 建議放在類的內部,或函數體的內部使用)

C++的異常和處理

? ? ? 定義拋出異常的函數 ?void test(int i) throw(char * exp)

? ? ? 實現定義的函數 ? ? ?void test(int i){ ?if(...){ throw "error..."}else{...} }

? ? ? 抓取異常 ? ?try { test(2)} catch( char* exp){}

? ? ? 需要注意: try{} catch{} catch{} ? 可以包含多個catch

C++ 模板

? ? ? ? ? 函數的模板(模板函數)定義:?

? ? ? ? ? ? ? ? ? ? ? ?template < typename/class ?形參>

? ? ? ? ? ? ? ? ? ? ? ?返回值類型 ?函數名(參數列表)

? ? ? ? ? ? ? ? ? ? ?template <class Type1,class Type2 > void _typefunc(Type1 a,Type2 b)

? ? ? ? ? ? ? ? ? ? ? { ?

? ? ? ? ? ? ? ? ? ? ? ? ? return ?a+b;

? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ?類的模板(模板類)定義:

? ? ? ? ? ? ? ? ? ? ? ? ? ? template <class A> class A

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? public:T g(T a,T b);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? A();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };




?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容