1、動態建立機制的作用
在不知道類名的情況下,將類的物件建立出來。
2、動態建立機制的使用
2.1類必須從cobject派生
2.2類內必須新增宣告巨集 declare_dyncreate
2.3類外必須新增實現巨集 implement_dyncreate
cruntimeclass::createobject -負責建立類物件
3、動態建立機制的實現(相較於執行時類資訊來說)
3.1多了乙個靜態函式 cdog::createobject
3.2靜態變數的第四個成員不再為null,儲存新增加的那個靜態函式的位址
4、巨集展開的各部分的作用
classcdog -靜態變數,儲存了關於類資訊,負責連線鍊錶,儲存了靜態函式的位址(cdog::createobject)
getruntimeclass() -虛函式,獲取本類(cdog)的靜態變數位址(煉表頭節點)
createobject() -靜態函式,new了乙個cdog類的物件並返回物件位址
5、動態建立機制的執行過程
5.1利用本類靜態變數位址(&cdog::classcdog)呼叫cruntimeclass結構體成員函式createobject
5.2在函式內部取出靜態變數的第四個成員(cdog::createobject)並呼叫之
5.3在cdog::createobject函式內部new了乙個cdog類的物件並返回物件位址。
MFC 動態建立機制 模擬實現
mfc 動態建立機制 模擬實現 動態建立的難點在於,你不能夠根據從檔案中或者使用者的輸入中根據類名稱來建立乙個物件。mfc實現動態建立的方法還是在於cruntimeclass 及其建立起來的型別網路。它在cruntimeclass中加入了新的成分 cruntimeclass createobject...
MFC六大機制之五 動態建立機制
什麼叫動態建立?建立位置型別的物件,我們可以先寫乙個建立物件的函式,要求是任何類的物件都可以使用該函式去建立,也包括後來定義的類。你給我哪個類這個函式就能建立這個類的物件,函式在類的定義之前 1.建乙個win32控制台程式。2.將stdafx.h 新增標頭檔案。3.project settings選...
MFC動態建立物件
define implement dyncreate class name,base class name cobject pascal class name createobject implement runtimeclass class name,base class name,0xffff,...