工作需要,開始學習MFC,最近在讀《深入淺出MFC》,將所看的內容整理作爲筆記
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
************************************************
**勿在浮沙築高臺——c++重要性質 **
**date:27/12/2013 edit by linuxsbird **
************************************************
c++的重要性質:封裝性(encapsulation)繼承性(inheritance)多態性(polymorphism)
1 封裝性:
class與struct的區別:
1 關於使用大括號初始化:
class和struct如果定義了構造函數的話,都不能用大括號進行初始化如果沒有定義構造函數,struct可以用大括號初始化。
如果沒有定義構造函數,且所有成員變量全是public的話,可以用大括號初始化。2 關於默認訪問權限:
class中默認的成員訪問權限是private的,而struct中則是public的。3 關於繼承方式:
class繼承默認是private繼承,而struct繼承默認是public繼承。
2 繼承性:
主要需要我們掌握this指針
一個對象的this指針並不是對象本身的一部分,不會影響sizeof(對象)的結果。this作用域是在類內部,當在類的非靜態成員函數中訪問類的非靜態成員的時候,編譯器會自動將對象本身的地址作爲一個隱含參數傳遞給函數。
|
void Date::setMonth( int
mn )
{
month =mn;
this->month =mn;
(*this).month =mn;
//這三句是等價的
}
|
1.如果你以一個“基類之指針”指向“派生類之對象”,那麼經由該指針你只能夠調用基類所定義的函數。
2.如果你以一個“派生類之指針”指向一個“基類之對象”,你必須先做明顯的轉型。這種做法很危險,不符合真是的生活經驗,在程序設計上也會給程序員帶來困惑。
3.如果基類和派生類都定義了“相同名稱的成員函數”,那麼通過對象指針調用成員還數時,到底調用的是哪一個函數,必須視該指針的原始類型而定,而不是視實際所指的對象的類型而定。