在C ++中的构造函数foo <t>()中有一个模板是什么意思?</t>

时间:2014-01-01 19:59:42

标签: c++ templates constructor

在下面的代码中,构造函数后面有<T>是什么意思?

template<class T>
class foo{
    int x;
public:
    foo<T>(){ // ??
        x=0;
    }
};

int main(){
    foo<int>* fo = new foo<int>();
}

代码编译成功,没有错误。

我在c ++中对方法和函数声明语法进行了一些搜索,但找不到它的含义。

那么,拥有这样的构造函数以及它应该如何使用意味着什么呢?

1 个答案:

答案 0 :(得分:3)

可以使用以下(C ++ 11,12.1)声明构造函数:

  • 注入的班级名称(仅foo
  • 用于命名类模板(foo<T>
  • 的当前特化的类名

此外,C ++ 11 14.6.1 / 3表示“类模板或类模板特化的注入类名称可以用作模板名称或< em> type-name 无论在哪个范围内。“

所以任何一种形式都没问题。