代码之家  ›  专栏  ›  技术社区  ›  Psyduck

CPP:定义模板时泛型数据类型是类[已关闭]

c++
  •  -1
  • Psyduck  · 技术社区  · 6 年前

    定义模板时,格式为:

    template <class T> returnType templateName{...};

    class 上面模板声明中的关键字使数据类型成为类?问题解释如下:

    里面 <class T> class ClassName{...}; . 所以我的理解是,后面跟一个类关键字的所有东西都是一个类的名称。对于模板声明,还有一个 前关键字 T

    1 回复  |  直到 6 年前
        1
  •  4
  •   R Sahu    6 年前

    里面 <class T> , T 应该是数据类型的名称,并且前面有“类”。这是否意味着CPP中的数据类型也是类?

    答案是“不”。

    typename 以及 class . 是更准确的描述,但是 也得到支持,很可能是因为历史原因。

    因此,

    template <typename T> struct Foo {};
    

    template <class T> struct Foo {};
    

    可以使用任何类型作为模板参数来创建对象。它可以是基本类型之一,也可以是用户定义的类型之一(aka 西班牙/ struct s) 是的。

    给出上述类模板,可以使用:

    struct Bar {}; // User defined type
    
    Foo<Bar> f1;   // Using user defined type to create the object f1
    Foo<int> f2;   // Using a fundamental type to create the object f2