类模板参数带默认值
类模板参数可以带默认值吗?答案当然是肯定的。看过STL源码的人就知道,STL里面大量使用了模板技术。
有兴趣的可以去看看STL的源码,从中可以学到不少知识。
今天,我就写一个带默认值的类模板,如下:
#pragma once template<typename T, typename T defValue = NULL> class CType { public: CType() :m_value(defValue) { } ~CType() { } BOOL IsNull() const { return (defValue == m_value); } private: T m_value; };
使用起来也简单,如下:
CType<HANDLE, INVALID_HANDLE_VALUE> winHandle;
BOOL bNull = winHandle.IsNull();
CType<HANDLE> nHandle;
bNull = nHandle.IsNull();
CType<int*> intType;
bNull = intType.IsNull();
是不是很方便,不用去考虑很多细节。