概述:編程
C++語言很是的複雜,有不少種編程範式:面向對象範式,泛型編程範式,元編程範式等。之因此複雜是由於C++語言所描述的真是世界是複雜的。C++語言經歷了一系列的發展,總的原則是要讓編程方便而效率又不會損失太多。函數
本系列課程主要學習面向對象編程,也就是使用C++語言中的面向對象範式。學習
本週主要學習C++中最簡單的類的實現:不帶指針的類的實現。這個其實和麪向對象沒什麼關係,主要仍是強調封裝,把數據和操做數據的函數放在一塊兒,這個稱爲「基於對象」的設計,並且仍是「基於對象」設計中最簡單的帶指針的類的實現。this
其實,帶不帶指針不是本質,本質是類的全部成員都具備合適的內存管理行爲(由於都是值類型,class默認爲值類型生成合適的內存管理代碼)。設計
細節:指針
1. 頭文件由C到C++的變化如 #include <stdio.h> ---> #include <cstdio>對象
2. 頭文件中的防衛式聲明---同C語言內存
3. inline函數可實如今類的定義中(無需指定inline),或在.h文件中實如今類外(必須指定inline).inline只是一種請求,複雜的函數的這種請求基本不可能成功。資源
4. class的訪問權限:private,protected,public編譯器
5. 函數的參數能用引用就必須用引用,能加const就必須加const
6. 友元函數和友元類能夠直接訪問其朋友類的private域
7. this指針即指向調用函數對象的指針,其實和C無本質區別,如C++中Obj.some_func(param)被編譯器修改成C中對應的的 some_func( &pObj, param );其中&pObj就是this指針的實參
8. 三類很是重要的函數:
a) 構造函數(對象如何產生)
b) 析構函數(對象如何消亡)
c) 複製控制類函數( 拷貝構造函數和operator=() )描述對象如何被複制
本週的類不涉及資源管理,並是值類型,因此只須要實現構造函數,其他兩類函數,C++語言默認生成的就足夠好了。
9. 運算符重載
這個要謹慎使用,有無數的坑等着你,最好能不使用,而直接使用普通的函數。不過,對於一些類,人們經常用運算符來操做它們,也可使用一下運算符重載,當心,當心必定要當心!