2016-12-06 52 views

回答

1

我不認爲有一種方法可以在編譯時對其進行完美檢查,例如,您的代碼可以鏈接到另一個庫中,從您的類派生的子類定義虛擬方法,以及實現虛擬方法的設置爲NULL(顯式地,或通過不初始化它)在子類中。

處理這種傳統的方法是在運行時: g_assert (base->pure_virtual_method != NULL); base->pure_virtual_method();

一些靜態分析工具可以能夠檢查在編譯時這個g_assert()約束,雖然給出子類的高度動態性質的GObject,那是不可能的。