gpt4 book ai didi

C++参数化构造函数在模板化类中

转载 作者:行者123 更新时间:2023-11-28 02:26:16 26 4
gpt4 key购买 nike

我最近开始学习 C++ 模板,我不确定是否需要包含 template <class T>用于我实现参数化构造函数。

  template <class T>
class A
{ T num;

//default constructor (parameterized)

template <class T>//getting error
A(T value)
{ num=value;}
}

当我包含 template<class T> 时,我得到一个错误阴影模板参数 < class T >对于构造函数。但是当我将其注释掉时它会起作用。

我想知道为什么我不需要为构造函数声明模板。

最佳答案

如果您确定需要模板化构造函数,则为模板使用不同的参数名称:

template <class T>
class A
{
T num;

//default constructor (parameterized)

template <class U>
// ^
A(U value)
// ^
{ num=value;}
};

否则,用于模板化构造函数的模板参数名称 T 将隐藏在类模板声明中使用的名称。


正如您在评论中所问的“什么时候使用模板化构造函数?”

它适用于类似的情况

A<double> a(0.1f);

注意上面只是一个简单的例子,不需要模板化的构造函数。这只是为了演示模板化构造函数用于从与实例化中使用的类型不同的类型进行转换。


"I am wondering why I dont need to declare the template for the constructor."

没有(或有额外的)非模板化构造函数的模板类将简单地使用指定为参数类型的类模板参数的 T

template <class T>
class A
{
T num;

A(T value)
// ^
{ num=value;}
};

这是标准情况,大多数模板类不需要模板化构造函数或其他模板化函数。

关于C++参数化构造函数在模板化类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30554887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com