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

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

版权声明:本文为sooksjb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sooksjb/p/9290956.html