c++模板理解

C++ template comprehension

本文关键字:c++      更新时间:2023-10-16

我正试图理解以下代码的含义,因为它是一个有效的c++代码:

template<class A>
class AT
{
    AT();
};
template<class B>
AT<B>::AT()
{}

有人能帮助我理解什么是模板实例化在构造函数的效果?如果有人能提供一个有用的实际用例,我将不胜感激。

坦克

这里没有模板实例化。这段代码的后半部分简单地定义了AT类的构造函数。请注意,在执行以下操作时,通常做法是对模板参数使用相同的名称:

template<class A>
class AT
{
    AT();
};
template<class A>
AT<A>::AT()
{}

这种语法的用途是打破依赖循环:

template<class A>
class AT
{
    AT();
};
class Dependent
{
    AT<Dependant> member; // Complete definition of AT is needed here
};
template<class A>
AT<A>::AT()
{
    Dependent object; // Complete definition of Dependent is needed here
}

模板参数的名称不重要。如果你把第二部分写成

template<class A>
AT<A>::AT()
{ }

魔法消失了,它只是构造函数的一个定义。

相关文章:
  • 没有找到相关文章