一些模板的写法
2014-02-11 10:48
183 查看
1.被嵌套到其他类中的模板类成员函数的实现写法:
2.模板类无参数
3.typename用于嵌套依赖名字
destroy1
destroy2
也可以把SmartPtr的声明和实现分开,把默认参数写到声明中。
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的声明和实现分开,把默认参数写到声明中。
相关文章推荐
- 学习xhtml的第三课(关于开发工具,添加模板,注释写法,一些注意点)
- 数据存储——java中List与Map初始化的一些写法分享
- 多个按键的写法 并实现一些action
- C 的 一些写法格式 交流
- CSS HACK:浏览器兼容的一些写法 【转】
- NetTiers模板中各个选项的一些解释(zt)
- Servlet的一些技巧&模板代码
- [简历] 一些找工作中对简历的写法的看法 20160121
- 选择年份 php的写法要比js简洁一些
- 一些模板
- wps2012还是不错的,有输出pdf功能,还有一些不实用的模板
- 前端一些写法
- Xcode3与xcode4.2模板对比(Xcode4.2开发之一些变化)
- mybatis sql一些写法记录
- Java中List与Map初始化的一些写法
- pattern 的用法都一样,这里不再啰嗦各种详细写法了,只是列出来一些常用的正则就好了:
- 一些有意思的模板
- C++模板的一些巧妙功能
- 数论中的一些模板
- AXI Stream传输协议的一些研究与XPS外设模板