这个模板语法和无符号类型是什么?
What is this template syntax and unsigned type?
我是 C++ 的新手,我很难理解这段代码:
template <typename T = unsigned>
T = unsigned
是什么意思?
- 编译器是否对给定类型强制执行
unsigned
?
这是一个默认的模板参数;它类似于默认函数参数。如果您不输入参数,它将默认为 unsigned [int]
。想象一下:
template <typename T = unsigned>
struct foo
{
T one;
T two;
};
如果我声明例如 foo<char>
,生成的结构将有两个 char
成员。但是默认参数让我声明一个 foo<>
,并且 that 结构将有两个 unsigned int
成员,因为 unsigned int
是默认值。
模板有一个类型为 T
的默认参数,在本例中为 unsigned int
。
unsigned
是 unsigned int
的缩写。
例如;在客户端代码中,如果模板是 class 模板,则可以在声明中显式或不显式添加类型来声明对象;
ABC<> abc1; // the <> is required
ABC<unsigned int> abc2; // equivalent type to abc1
ABC<float> abc3;
.
我是 C++ 的新手,我很难理解这段代码:
template <typename T = unsigned>
T = unsigned
是什么意思?- 编译器是否对给定类型强制执行
unsigned
?
这是一个默认的模板参数;它类似于默认函数参数。如果您不输入参数,它将默认为 unsigned [int]
。想象一下:
template <typename T = unsigned>
struct foo
{
T one;
T two;
};
如果我声明例如 foo<char>
,生成的结构将有两个 char
成员。但是默认参数让我声明一个 foo<>
,并且 that 结构将有两个 unsigned int
成员,因为 unsigned int
是默认值。
模板有一个类型为 T
的默认参数,在本例中为 unsigned int
。
unsigned
是 unsigned int
的缩写。
例如;在客户端代码中,如果模板是 class 模板,则可以在声明中显式或不显式添加类型来声明对象;
ABC<> abc1; // the <> is required
ABC<unsigned int> abc2; // equivalent type to abc1
ABC<float> abc3;