首页 / 软件开发 / C++ / 利用C++模板,代替虚函数实现类的静态多态性
利用C++模板,代替虚函数实现类的静态多态性2011-04-21 csdn 肖舸熟悉模板编程的朋友或许听到过这个技巧或者模式:Barton-Nackmann 技巧或者称 奇异 循环模板模式(Curiously Recurring Template Prattern)。其实在 《c++ 编程语 言》这本bible 书里,在模板那章提到过一个很奇妙的类的实现,用的就是这个技术。当时 ,我就被C++模板技术叹为观止。近期在学boost库时偶然碰到了这个技巧,同时在写一个类 时引发了我的思考,这里就利用这个技巧来实现,静态多态函数(我自己发明的叫法,呵呵 )。我们知道C++的多态函数会带来很多灵活性,但是不可避免的它是有运行时的性 能损失的。 而c++的另一个强大特性就是模板了。模板给C++带来了,编译时的多态,通过模 板元编程,C++可以实现类似C#,java的refection的特性。这里我就举来实现利用模板来代 替虚函数。例子1:#include <iostream>
using namespace std;
class common_base
{
public:
virtual void fun()=0;
};
class common_derive:public common_base
{
public:
void fun()
{ cout<<"in common_derive fun()"<<endl;
};
void main()
{
common_base * pb = new common_derive;
pb->fun();
}