随笔 - 505  文章 - 1034  trackbacks - 0
<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345


子曾经曰过:编程无他,唯手熟尔!

常用链接

留言簿(94)

随笔分类(649)

随笔档案(505)

相册

BCB

Crytek

  • crymod
  • Crytek's Offical Modding Portal

Game Industry

OGRE

other

Programmers

Qt

WOW Stuff

搜索

  •  

积分与排名

  • 积分 - 903797
  • 排名 - 14

最新随笔

最新评论

阅读排行榜

评论排行榜

使用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++

FeedBack:
# re: [推荐]用boost::any实现virtual template function 2006-10-30 23:10 阿来
msdn 只是说: 成员函数模板不能是虚拟的

但是 why?

哪位高手给解释一下?  回复  更多评论
  
# re: [推荐]用boost::any实现virtual template function 2006-10-30 23:33 阿来
自己解释了下,不够深入  回复  更多评论
  
# re: [推荐]用boost::any实现virtual template function 2006-11-01 08:21 shaovie
one compile-time polymorphism, one run-time dynamic binding. can't be declared the same time  回复  更多评论
  
# re: [推荐]用boost::any实现virtual template function 2006-11-01 11:16 阿来
@shaovie
Damn right!  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理