使用boost::any实现virtual template成员函数
如你所知,C++中没有提供virtual template function。然而有时候你的确会有这种需要,any可以一定程度上满足这种需要,例如,
1 class Base
2 {
3 public:
4 virtual void Accept(boost::any anyData)
5 {
6
7 }
8 };
9 class Derived:public Base
10 {
public:
11 virtual void Accept(boost::any anyData)
12 {
13
14 }
15 };
这样的Accept函数能够接受任意类型的数据,并且是virtual函数
//==================
俺是没这种需求,不过看到了这个,觉得好玩。
Q: c++中为什么没有提供virtual template function?
A: 因为用不同的 template parameters(模板参数)实例化 function templates(函数模板)导致不同的函数被调用,这 是发生在编译期的, 以 compile-time polymorphism(编译期多态)著称。
而virtual member funtion是通过dynamic binding(运行期)来实现不同的函数被调用,是runtime polymorphism.
posted on 2006-10-30 23:00
七星重剑 阅读(1156)
评论(4) 编辑 收藏 引用 所属分类:
PL--c/c++