深入淺出MFC筆記第二章

1.       函數的調用是依賴指針的原始類型而不管它實際指向何方。

2.       虛函數是在程序執行期進行的動態綁定或後期綁定;而非虛函數是程序在編譯時間進行的靜態綁定或前期綁定。

3.       純虛擬函數不需定義其實際動作,它的存在只是爲了在衍生類別中被重新定義,只是爲

了提供一個多態接口。只要是擁有純虛擬函數的類別,就是一種抽象類別,它是不能夠

被具象化的,也就是說,你不能根據它產生一個對象。

virtual void display() = 0; // 注意"= 0"

4.       抽象類別不能產生出對象實體,但是我們可以擁有指向抽象類別之指針。

5.       虛擬函數衍生下去仍爲虛擬函數,而且可以省略virtual 關鍵詞。

6.       每一個「內含虛擬函數的類別」,編譯器都會爲它做出一個虛擬函數表,表中的每一筆元素都指向一個虛擬函數的地址。此外,編譯器當然也會爲類別加上一項成員變量,是一個指向該虛擬函數表的指針vPtr(4個字節)

7.       類對象的內存區塊中不能看到任何與成員函數有關的任何東西。

8.       (CDocument*)(&mydoc))->func()只是把指針的類型改變了,並沒有改變指針所指向的內容類型,所以會調用指針原來指向的函數。(CDocument)mydoc).func()下上的強制類型轉換會造成對象切割,因此會調用CDocument類型中的函數。

9.       靜態成員變量在使用前,必須初始化,並且初始化不受private權限的控制。不要把static成員變量的初始化放在構造函數或頭文件中,因爲構造函數或頭文件可能被調用多次。應該放在main函數或全局函數中,或任何函數之外。

class SavingAccount

{

private:

  char m_name[40];  // 存戶姓名

  char m_addr[60];  // 存戶地址

  double m_total;   // 存款額

  static double m_rate;    // 利率

  ...

public:

  static void setRate(double newRate) { m_rate = newRate; }

  ...

};

double SavingAccount::m_rate = 0.0075;   // 設置 static 成員變量的初值

 

10.   如果你希望在產生任何object 之前就存取其class private static 成員變量,則必須設計一個static 成員函數。

11.   C++ new 運算子和C malloc 函數都是爲了配置內存,但前者比之後者的優點是,new 不但配置對象所需的內存空間時,同時會引發構造式的執行。

12.   當衍生類別的對象誕生之時,構造式的執行是由最基礎類別至最尾端衍生類別;當對象要毀滅之前,析構式的執行則是反其道而行。

13.   對於靜態(static)對象,當對象誕生時其構造式被執行;當程序將結束時(此對象因而將遭致毀滅)其析構式才被執行,但比全域對象的析構式早一步執行。

14.   四種不同的對象生存方式:

1)      堆棧(stack)之中產生它:

void MyFunc()

{

CFoo foo; // 在堆棧(stack)中產生foo 對象

...

}

2)      在堆積(heap)之中產生它:

void MyFunc()

{

...

CFoo* pFoo = new CFoo(); // 在堆(heap)中產生對象

}

3)      產生一個全域對象(同時也必然是個靜態對象):

CFoo foo; // 在任何函數範圍之外做此動作

4)      產生一個區域靜態對象:

void MyFunc()

{

static CFoo foo; // 在函數範圍(scope)之內的一個靜態對象

...

}

 

15.   執行時期型別信息(Runtime Type InformationRTTI: 在程序執行過程中知道某個對象是屬於哪一種類別。使用方法:首先包含typeinfo.h,其次使用typeid運算子。

typeid(GIFimage) == typeid(*type)  //GIFimage是類型名,type是對象。

編譯時需選用/GR 選項。// RTTI.CPP - built by   C:/> cl.exe -GR rtti.cpp <ENTER>

16.   態生成這段沒看懂。~

   這筆記寫了有一段時間了,一直沒放上來! 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章