-1
A
回答
3
你的問題是模糊的,但它聽起來像你想的Curiously recurring template pattern
有很多更好的人比我對解釋它在boost庫中用得很多。檢查出boost.iterator文檔和代碼的一個很好的例子
2
Here you go ...
谷歌,是不是很神奇? :P
2
如果你有C++有效(第3版)圍坐副本,斯科特邁爾斯給出了一個很好的處理條款35(第170頁)的NVI成語。
+0
是的,我擁有它。我會看看。 thx – vehomzzz 2009-08-13 18:20:17
2
class base
{
public:
void bar()
{
getReady();
barImpl();
cleanup();
}
void getReady() {cout << "Getting ready. ";}
void cleanup() {cout << "Cleaning up.\n";}
protected:
virtual void barImpl() {cout << "base::barImpl. ";}
}
class derived : public base
{
protected:
virtual void barImpl() {cout << "derived::barImpl. ";}
}
int main()
{
base b;
derived d;
b.bar();
d.bar();
}
輸出:
Getting ready. base::barImpl. Cleaning up. Getting ready. derived::barImpl. Cleaning up.
相關問題
- 1. 如何使用虛擬方法顯式實現接口?
- 2. 非虛擬接口 - 如何調用正確的虛擬功能
- 3. 如何調用(非虛擬)虛擬方法的原始實現?
- 4. 如何實現虛擬鼠標c#
- 5. C++從實現的虛擬類調用非虛方法
- 6. 如何模擬非虛擬方法?
- 7. 如何模擬C++中的接口?
- 8. 在C++中實現接口
- 9. 如何在Android中實現sqlite3虛擬表模塊?
- 10. 爲什麼在實現接口方法時允許虛擬?
- 11. 在IL中如何實現顯式接口實現?
- 12. 模擬非虛方法C++(gmock)
- 13. 返回虛擬接口實例?
- 14. 如何模擬擴展類並實現接口的對象?
- 15. 如何模擬一個使用PHPUnit實現Iterator接口的類?
- 16. 如何模擬一個方法內的接口實現?
- 17. 實現接口C#
- 18. 實現在C++接口
- 19. HippoMocks - 在C++中模擬COM接口?
- 20. 在C#中嘲弄非虛擬方法#
- 21. CLR實現對接口成員的虛擬方法調用
- 22. C++模板接口(列表實現)
- 23. 如何實現虛擬參考DBRef
- 24. 人們通常如何模擬在聲明中實現接口的類?
- 25. 實現模塊接口的pythonic方式
- 26. 如何實現C#4的IDynamicObject接口?
- 27. 如何實現接口的C#
- 28. C++模擬框架能夠模擬非虛擬方法和C函數
- 29. 將顯式接口實現重構隱式接口實現
- 30. C++ cli接口事件顯式實現
我很想知道你在說什麼 - 你需要提供更多的細節,優先考慮示例代碼。 – 2009-08-13 17:58:47
要添加到Neil中,我不確定單線程和多線程實現的含義。 NVI與線程無關,因此單線程/多線程NVI之間的區別與任何類的單線程/多線程實現之間的區別並沒有什麼不同。 – 2009-08-13 18:11:32
@Nick這個人似乎沉迷於一個小小的C++垃圾郵件巨星。我懷疑他理解他自己的問題。 – 2009-08-13 18:15:58