一些模板的写法
来源:互联网 发布:美工刀削苹果 编辑:程序博客网 时间:2024/05/02 02:50
1.被嵌套到其他类中的模板类成员函数的实现写法:
template <typename A>class X{ template <typename B> class Y { void foo(); };};template<typename A>template<typename B>void X<A>::Y<B>::foo(){}
2.模板类无参数
template <class>class myclass_sec{};
3.typename用于嵌套依赖名字
template <class T>class myclass{ typedef T class_type;private: class_type m_Val; template <typename A> friend void init_myclass(myclass<A> & obj, typename myclass<A>::class_type new_val);};template <typename T>inline void init_myclass(myclass<T> & obj, typename myclass<T>::class_type new_val){ obj.m_Val = new_val;};4.模板类作为模板参数使用
template <typename T>class Destructor1{public: static void Destroy(T obj) { cout<<"destroy1"<<endl; }};template <typename T>class Destructor2{public: static void Destroy(T obj) { cout<<"destroy2"<<endl; }};template <typename T, template<typename>class TDClass = Destructor1>class SmartPtr : public TDClass<T>{public: void Release() { Destroy(m_pT); }private: T m_pT;};int _tmain(int argc, _TCHAR* argv[]){ SmartPtr<int> ptr1; ptr1.Release(); SmartPtr<int, Destructor2> ptr2; ptr2.Release();return 0;}注意,TDClass使用了默认参数,可以省略,而TDClass的模板参数为空,也可以不为空,也可编译通过。运行结果:
destroy1
destroy2
也可以把SmartPtr的声明和实现分开,把默认参数写到声明中。
0 0
- 一些模板的写法
- 模板参数表的写法
- 类模板的写法
- 一些蠕虫的写法。。
- 正则的一些写法
- 一些宏的写法
- 一些Pythonic的写法
- 一些sql的写法
- 跨平台模板的写法
- 模板类友元函数的写法
- 类模板的成员函数模板写法
- linux kernel的一些写法
- js 的一些写法须知
- PHP 的一些高效写法
- css 一些三角形的写法
- sql 语句 的一些写法
- android AIDL的一些写法
- Unix一些脚本的写法
- 字体闪动的特效!
- C++ 中判断非空的错误指针
- OCP-1Z0-053-200题-50题-628
- Ubuntu 字体安装
- wifi 简单介绍
- 一些模板的写法
- Entity Framework的简单使用
- [存储] Cobar使用文档(可用作MySQL大型集群解决方案)
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- vim粘贴代码格式变乱
- 全屏背景布局居中显示demo
- android kernel
- iPhone UITextField 属性
- 关羽卖枣,张飞杀猪,二人何以有“盖世武功”?