现在的位置: 首页 > 综合 > 正文

模板使用进阶

2018年03月18日 ⁄ 综合 ⁄ 共 531字 ⁄ 字号 评论关闭

近期学到一些模板元编程的方法,进行总结:

1.多利用模板转发技术:

模板转发技术为一个通用技术,可以轻易扩展已有类的功能,不仅限于模板元编程。

实现步骤:假设有一个类为A,我们需要实现一个函数交fun()。于是,我们只需要实现一个类AImpl,在其中提供接口fun(),接着,使A继承AImpl,于是一切就都OK了。

要点分析:可以在几乎不改变A的情况下扩展功能。

2.利用模板可以实现在头文件中定义static成员:

实现举例:

原先使用:

Test.h

struct A {

static int m;

};

int A::m = 5; //放在头文件中,若有多个文件包含此头文件,将无法通过编译,只能移到.cpp中

模板使用:

Test.h

template <typename T>

struct A {

static T value;

};

int A<int>::value = 5;

Ok,即使多个文件包含此头文件,一样能够通过编译。

使用猜想:最简单的单例类中存在一个静态成员,总必须在.cpp中进行定义,可以采用此方法,只需要在头文件中追加。

3.template<typename T>    struct Type2Type    { typedef T type;       };

包装类,可以使加入模板元中所有类型均能通过type来获得。

抱歉!评论已关闭.