Pra*_*ari 25 c++ performance c++11
auto a = 10;
Run Code Online (Sandbox Code Playgroud)
当编译器知道a
是int
在编译时还是在运行时?如果在运行时推断类型,是否会影响性能?
谢谢
aar*_*man 18
我只是想补充一些其他答案没有解决的问题.
auto
不会得到特殊处理,它必须在编译时推断出类型. auto
应该如何使用.是的,你可以做auto i = 2;
,它工作正常.但是你需要auto的情况就是lambda.lambda没有namable类型(尽管你可以将它分配给a std::function
).另一种有用的情况是在类或函数模板中,很难弄清楚某些操作的类型(有时可能是不可能的),例如,当在模板类型上调用函数时,该函数可能会返回不同的函数.在给定的类型上,有多种类型,这基本上不可能确定它将返回哪种类型.你当然可以将函数包装在a中decltype
以找出返回值,但auto
写入更清晰. auto
它完全在编译时完成,没有性能差异.
auto i = 2;
Run Code Online (Sandbox Code Playgroud)
编译相同
int i = 2;
Run Code Online (Sandbox Code Playgroud)
声明的变量类型auto
在编译时完成,这意味着如果您有以下代码片段:
auto i = 10; // i is an integer
i = 3.14; // i is still an integer, will truncate to 3
Run Code Online (Sandbox Code Playgroud)
Herb Sutter(目前负责C++标准化委员会的人)建议"尽可能使用auto.这有两个原因.首先,最明显的是它方便我们避免重复我们已经陈述的类型名称和编译器已经知道了.其次,当一个类型具有未知或不可知的名称(例如大多数lambda函数的类型)时,它不仅仅是一种方便,你不能轻易地或根本不能拼写." (见这在他的博客).预期用途auto
是让开发人员更容易使用,所以只要看起来合适,就可以随意使用它.
归档时间: |
|
查看次数: |
13647 次 |
最近记录: |