template <> class CComObjectLockT<CComSingleThreadModel>;
请大侠指点一点. 这个语句是什么意思.
全文是.
template <class ThreadModel>
class CComObjectLockT
{
public:
CComObjectLockT(CComObjectRootEx<ThreadModel>* p)
{
if (p)
p->Lock();
m_p = p;
} ~CComObjectLockT()
{
if (m_p)
m_p->Unlock();
}
CComObjectRootEx<ThreadModel>* m_p;
};template <> class CComObjectLockT<CComSingleThreadModel>;
请大侠指点一点. 这个语句是什么意思.
全文是.
template <class ThreadModel>
class CComObjectLockT
{
public:
CComObjectLockT(CComObjectRootEx<ThreadModel>* p)
{
if (p)
p->Lock();
m_p = p;
} ~CComObjectLockT()
{
if (m_p)
m_p->Unlock();
}
CComObjectRootEx<ThreadModel>* m_p;
};template <> class CComObjectLockT<CComSingleThreadModel>;
这个特化是指什么意思,可不可以这样理解. CComObjectLockT mtt; 就相当于CComObjectLockT <CComSingleThreadModel> mtt;
不能这么认为,template <> class CComObjectLockT <CComSingleThreadModel>; 这句话在这里只是声明了一下当传人的模板参数是CComSingleThreadModel类型的时候, 例如CComObjectLockT <CComSingleThreadModel> mtt;就使用专门化的类型定义。真正的专门化在下面定义里了。
template <>
class CComObjectLockT<CComSingleThreadModel>
{
public:
CComObjectLockT(CComObjectRootEx<CComSingleThreadModel>*) {}
~CComObjectLockT() {}
};如果不是CComSingleThreadModel类型,就用默认的模板去处理,这里的默认模板就是楼主上面的全文那里介绍的。