【发布时间】:2017-07-06 00:31:13
【问题描述】:
在 C++ 入门 5 中,我看到了代码:
const int a = 40;
auto &b = a;
编译器可以推断出b,类型为:const int &。
我认为这是合理的,因为 a 是 const int,如果 b 具有 int & 类型,我们可以更改 const int 的值,这是非法的。
但是,书上说自动推导会省略顶层的 const,使用这条规则,在代码中:auto &b = a; a 只有 int 类型,我们可以推迟 b 的类型为 int &,与 b 类型为 const int & 的冲突。
另一个问题是代码:
auto &a = 8;
编译器无法在代码中直接推断出 a 的类型为 const int &:
const int a = 40;
auto &b = a;
编译器可以。为什么有区别?
【问题讨论】:
-
不清楚你在问什么?请详细说明需要回答的具体问题。
-
我认为
defer这个词应该换成infer。 -
@myaut 不是
infer,deduce。 -
@Barry:他们非常接近。 IE。维基百科:
Type inference is the ability to automatically deduce...另外,infer joke -
谢谢,对不起我的英语不好。