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

What does it mean to have a template in constructor foo<T>() in C++?

本文关键字:lt 意思 C++ gt 是什么 foo 构造函数 有一个      更新时间:2023-10-16

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

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

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

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

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

可以使用

以下内容(C++11, 12.1)声明构造函数:

  • 注入的类名(仅foo
  • 命名类模板的当前专用化的类名 ( foo<T>

此外,C++11 14.6.1/3 说"类模板或类模板专用化的注入类名可以用作模板名类型名,无论它在范围内何处。

所以任何一种形式都可以。