类模板参数带默认值

类模板参数可以带默认值吗?答案当然是肯定的。看过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();

是不是很方便,不用去考虑很多细节。

猜你喜欢

转载自www.cnblogs.com/sooksjb/p/9290956.html
今日推荐