1.編寫和設計單一類 Object Based(基於對象)
(1)class without pointer members
(2)class with pointer members
2.編寫和設計複雜類之間 Object Oriented(面向對象)
(1)Inheritance 繼承
(2)Composition 複合
(3)Delegation 委託
3.C++代碼的頭文件防衛式聲明:防止頭文件的重複引用 #ifndef TEST #define TEST #endif
4.inline內聯函數:函數若在類體中定義自動變成內聯函數,是否可以成爲內聯函數由編譯器決定
5.構造函數ctor:函數與類名相同;無返回值;支持初始化列表;構造函數重載overloading
6.常量成員函數:函數後面加const關鍵字,能加的儘可能所有都加
7.參數傳遞:值傳遞和引用傳遞(普通引用、常引用)
8.友元函數friend:可以得到private成員數據;相同類的各個對象互爲友元
9.參數和返回值的引用傳遞: 首先考慮引用->考慮引用有沒有問題-> 若是是局部的則沒法返回引用
10.操做符重載 - 成員函數/非成員函數
(1)賦值、下標、調用、成員訪問符,必須是成員函數
(2)符合賦值運算符應該是成員函數,但不是必須
(3)改變對象狀態的運算符或者是給定類型密切相關的運算符應該是成員函數
(4)具備對稱性的運算符多是轉換任一端的運算對象,一般爲非成員函數
11.帶指針的類必須關注三個特殊函數: 拷貝構造函數;拷貝賦值函數;析構函數
12.棧(stack):是存在於某個做用域的一塊內存空間;堆(heap):是指由操做系統提供的一塊全局內存空間,程序可動態分配從某個區域得到空間,必須本身釋放該空間,不然就是內存泄漏
13.new:先分配內存再調用構造函數;delete:先調用析構函數再釋放內存
14.static:脫離了對象,存儲再靜態區,只存在一份;靜態成員數據&靜態成員函數
15.類模板和函數模板
16.命名空間:using directive(using namespce std;) 或者 using declaration(using std::cout;)
17.Object Oriented Programming(OOP) 、 Object Oriented Design(OOD)
18.Composition
(1)has-a
(2)構造:由內到外
(3)析構:由外到內
19.Delegation
(1)Composition by reference
(2)構造:由內到外
(3)析構:由外到內
20.Inheritance
(1)繼承方式: public、protected、private
(2)構造:由基類到派生類
(3)析構:由派生類到基類
(4)基類的析構函數必須是虛函數,不然會出現undefined behavior
21.Inheritance+Composition:構造和析構的執行順序
22.Delegation+Inheritance:
(1)Observer
(2)Composite
(3)Prototype函數