理解统一初始化器和最令人烦恼的解析
在 C 11 中,统一初始化器为初始化对象和数据结构提供了简洁的语法。然而,它们的使用可能会导致潜在的歧义,称为“最令人烦恼的解析”。
最令人烦恼的解析
考虑以下代码片段:
<code class="cpp">#include<iostream> class Timer { public: Timer() {} }; int main() { auto dv = Timer(); // What is Timer() ? And what type is dv? int time_keeper(Timer()); // This is a function right? And why isn't the argument " Timer (*) ()"? return 0; }</code>
分析:
dv = Timer();
int time_keeper(Timer());
结论:
在“最令人烦恼的解析”场景中,编译器尝试推断一个基于上下文和规则的表达。通过了解这些规则如何应用,程序员可以避免歧义并以明确的意图编写代码。
以上是最令人烦恼的解析是什么以及为什么它会发生在 C 11 中?的详细内容。更多信息请关注PHP中文网其他相关文章!