类型推导规则是什么auto*
?
考虑以下:
int x = 64;
int* px = &x;
auto* v1 = &x; // auto => ??? ok v1 is int* ...
auto* v2 = px; // auto => ??? is v2 int* ?
auto* v3 = &px; // auto => ??? is v3 int** ?
只是为了澄清我的问题,如果我们将类型推导分为两个步骤:
- 推导出“的类型
auto
“ 本身没有(*
) ... 然后
- 推断对象的类型(
v1
, v2
and v3
)后添加(*
)
所以我的两个问题是:
- 什么会
auto
可以推导为没有 (*
) ?
- Will
v2
是指向int
(int*
) and v3
指向指针的指针(int**
) ?
auto
将推导出给定表达式的 cv 限定类型。auto*
将推导出表达式指向的类型的 cv 限定类型 - 如果表达式是指针 - 否则将无法编译。
对于给定的示例,实际类型v
将会pointer to int
, 与v2
,并且对于v3
这将是pointer to pointer to int
.
如果你的第一个例子写成auto v1 = &px
,v1 的类型将保持不变。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)