类模板参数带默认值

Posted sooksjb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类模板参数带默认值相关的知识,希望对你有一定的参考价值。

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

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




以上是关于类模板参数带默认值的主要内容,如果未能解决你的问题,请参考以下文章

在类模板实例化中为某些参数显式使用默认值

STL容器自定义内存分配器

STL容器自定义内存分配器

STL容器自定义内存分配器

Flask模板宏的概念和基本使用

使用外部类的模板参数设置内部模板类的默认模板参数