首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我们需要提供模板参数来定义类时?

当我们需要提供模板参数来定义类时?
EN

Stack Overflow用户
提问于 2012-06-01 00:07:06
回答 1查看 95关注 0票数 1
代码语言:javascript
复制
template<typename T> class A // template parameterization
{
   private:
      T t;
   A(const T& v) : t(v) {}
};

class B
{
    template<typename T>
    B(const T& v)
    {
        std::cout << v << std::endl;
    }
};

// usage of A and B
A<int> a;
B      b(10);

Question>在什么情况下,我们必须提供模板参数才能定义类变量。

例如,

如果类包含模板成员变量或?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-01 00:12:37

如果类是类模板,则必须提供模板参数来创建实例。在您的示例中,class A是一个类模板,而class B不是。

类模板:

代码语言:javascript
复制
template <typename T> class A {};

不是类模板:

代码语言:javascript
复制
class B { 
  // code may include function template, etc.
  // but the class itself is not a class template
};

在您的示例中,class B有一个模板构造函数,编译器可以使用该参数来确定要进行的专门化。因此,在这种情况下,它会生成一个等价于

代码语言:javascript
复制
B(const int&);

因为文字10是一个int。构造函数与函数不同,因此只有当编译器能够弄清楚T是什么时,这才能起作用。有关更多详细信息,请参阅this related question

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10837259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档