-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. C#中的非虚拟接口设计模式/ C++
- 2. 如何实现虚拟网络接口
- 3. 如何使用虚拟方法显式实现接口?
- 4. 非虚拟接口 - 如何调用正确的虚拟功能
- 5. 如何调用(非虚拟)虚拟方法的原始实现?
- 6. 无效在非虚拟验证接口
- 7. 如何实现虚拟鼠标c#
- 8. 如何在虚拟现实中使用现有的Redis连接?
- 9. C++从实现的虚拟类调用非虚方法
- 10. 如何模拟非虚拟方法?
- 11. 在C++中实现接口
- 12. 在C++中实现接口?
- 13. 私有继承和非虚拟接口
- 14. 是否有可能强制接口实现在C#中是虚拟的?
- 15. 如何删除在Linux虚拟接口?
- 16. 如何在Android中实现sqlite3虚拟表模块?
- 17. C++编译器如何在内存中实现虚拟继承?
- 18. cpp文件中的纯虚拟接口实现
- 19. 为什么在实现接口方法时允许虚拟?
- 20. 在IL中如何实现显式接口实现?
- 21. 模拟非虚方法C++(gmock)
- 22. 返回虚拟接口实例?
- 23. 如何模拟一个方法内的接口实现?
- 24. 如何模拟一个使用PHPUnit实现Iterator接口的类?
- 25. 如何通过实现接口模拟TCPClient
- 26. 如何模拟扩展类并实现接口的对象?
- 27. C#接口实现
- 28. 接口实现C#
- 29. 实现接口C#
- 30. 实现在C++接口
我很想知道你在说什么 - 你需要提供更多的细节,优先考虑示例代码。 – 2009-08-13 17:58:47
要添加到Neil中,我不确定单线程和多线程实现的含义。 NVI与线程无关,因此单线程/多线程NVI之间的区别与任何类的单线程/多线程实现之间的区别并没有什么不同。 – 2009-08-13 18:11:32
@Nick这个人似乎沉迷于一个小小的C++垃圾邮件巨星。我怀疑他理解他自己的问题。 – 2009-08-13 18:15:58