大一的時候學了C語言 SDK編程也接觸了一段時間 今天準備學學MFC
於是想把學習過程中自己的心得寫下來 面向對象編程對我來說是陌生的 所以
完全是個菜鳥 大家一起來學習 我爭取一天寫一篇筆記 這個筆記不是用來
教人學習的 只是學習過程中對思想上的把握 以供分享及自己日後複習
話說沒學C++的語法就開始學MFC確實有點倉促 於是要惡補一下——
1.類與對象
個人理解 這個東西根本不需理解 類是抽象的 對象是具體的
如果設定鉛筆是個類 那麼我的鉛筆和你的鉛筆 以及他的鉛筆就是對象
我覺得在具體編程裏面 類是一個自定義的數據類型 對象就是數據類型定義
出的變量 在具體說說 類也無非就是 裏面可以有函數的結構體
只是內部成員的默認權限與結構體不同罷了
不要把類和對象想的神奇 你要有一種 “噢 就應該是這樣”的感覺
當然只是理解類和對象是不夠的 要想從面向對象的角度編程 需要一定的練習
訪問控制標識:
public:什麼地方都可以訪問
private:僅在自己類的內部訪問
protected:外部無法訪問 子類可以
2.構造函數與析構函數
(1)構造函數:最重要的作用是創建對象本身,每個類都必須有一個構造函數
沒有構造函數就不能創建對象,如果用戶沒有定義構造函數,c++將提供一個
默認的不帶參數的構造函數,它只創建對象而不進行數據的初始化,只要用戶定義
了一個構造函數,C++就不再提供構造函數了。
(2)析構函數:對象要死的時候 清理下門戶,(大致就這意思),析構函數不允許帶參數
和返回值 一個類只能有一個析構函數。
在構造函數中分配對內存 在析構函數中對其釋放
這兩個函數在類中創建 不管創建什麼對象 都會自動執行 這和C語言中 凡事都要
程序員親歷親爲有很大的區別 比如C語言中的結構體 每創建一個結構體變量都要自己
去爲其初始化。
3.重載
(1)操作符的重載:
所有語言都爲內置類型進行了操作符重載
比如:
int a,b,c;
float d,e,f;
c=a+b;
f=d+e;
'+'操作符 對不同的數據類型進行數學概念上相似的操作 這就是一種操作符重載
另外C++中的輸入輸出操作符 << 和>>實際上是對C中的左移位和右移位操作符的重載
(2)函數重載:
函數重載構成的條件:函數傳入的參數類型,傳入的參數個數不同,才能構成重載。
其實思想上和操作符重載是一樣一樣的 參數不就是要處理的數據嗎 不同的數據用
相同名字的函數用相似的方法進行操作 大體上就是這個意思了
4.this指針
指向對象本身的指針 每創建一個對象就會出現一個對應的this存放該對象的地址
對象調用類的成員函數時 除了接受用戶定義的實參 還接受到一個對象的地址 這個地址
被一個隱含的形參this指針所獲取。
5.繼承
多重繼承暫時不說 簡單的繼承就是故名思意 沒什麼可說的 比如昆蟲這個類 它的屬性是
六條腿 方法是爬 我們又建立一個甲殼類昆蟲的類 那麼難道我們還要重複的在建這個類時
寫上六條腿和它能爬嗎 我們只要 甲殼蟲:public 昆蟲 這麼短短的一句話就可以說明
甲殼蟲類是昆蟲類的子類 或者說派生類 就知道甲殼蟲類具有昆蟲的所有特性 當然還可以
添加甲殼蟲自己的特性
上面的 甲殼蟲:public 昆蟲 public是類的繼承特性 還可以是protected和
private 具體訪問特性略。
派生類會先調用基類的構造函數然後再調用自己的構造函數 析構則相反
6.函數的覆蓋
函數的覆蓋是發生在父類與子類之間的 而函數的重載是在同一個類裏的
7.::作用域標識符
8.多態性
看到多態讓我想起病毒中的新技術——但不知道是否有關 言歸正傳 多態性讓我有點暈 因爲和
重載覆蓋什麼的很容易混 這個暫時不多寫 還是在代碼中找感覺比較好
一般,我們使用多態是爲了避免在父類裏大量重載引起代碼臃腫且難於維護。