自定SERIAL 巨集給抽象類別使用

2021-03-31 08:56:58 字數 895 閱讀 9984

前兩天程式設計正好遇到這個問題,找了半天沒結果.無意中發現了下面的論述:)

摘自《深入淺出mfc》第8章document-view 深入探討

p537

自定serial 巨集給抽象類別使用

你是知道的,所謂抽象類別就是包含純虛函式的類別,所謂純虛函式就是只有宣告

沒有定義的虛函式。所以,你不可能將抽象類別具現化(instantiated)。那麼,

implement_serial 展開所得的這段碼:

cobject* pascal class_name::createobject() 面對如果㆒個抽象類別class_name 就行不通了,編譯時會產生錯誤訊息。這時你得自行

定義巨集如:

#define implement_serial_my(class_name, base_class_name, wschema) _implement_runtimeclass(class_name, base_class_name, wschema, null) carchive& afxapi operator>>(carchive& ar, class_name* &pob) 也就是,令createobject 函式為null,這才能夠使用於抽象類別之。

p525

#define implement_serial(class_name, base_class_name, wschema) cobject* pascal class_name::createobject() _implement_runtimeclass(class_name, base_class_name, wschema, class_name::createobject) carchive& afxapi operator>>(carchive& ar, class_name* &pob)

抽象類 抽象方法

抽象類 1.類名前有abstruct修飾。有構造方法。在建立抽象類的子類的時候,還是會先建立抽象父類的物件的。2.抽象類不能例項化是指不能手動的new。抽象方法 1.抽象方法 沒有方法體且需要用abstruct關鍵字修飾 作用 需要改變的地方都應該是抽象。抽象方法只能存在於抽象類或介面中。2.有抽象...

抽象類,抽象方法

1 抽象類中可以有實現的方法。抽象方法必須在抽象類中。using system using system.collections.generic using system.linq using system.text namespace test 抽象類可以包含抽象屬性 public int age...

抽象類 抽象方法

抽象方法 使用 abstract修飾的方法,只有方法的宣告 沒有方法體 定義的是一種 規範 就是告訴子類必須要給抽象方法提供具體的實現 抽象類 包含抽象方法的類就是抽象類 通過abstract方法定義規範 然後要求子類必須定義具體實現 通過抽象類 我們就可以做到嚴格限制子類的設計 使子類之間更加通用...