大佬教程收集整理的这篇文章主要介绍了c – 为什么使用带有默认构造函数的括号会导致创建变量?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <String> int main() { std::string(foo); return 0; }
由于某种原因,std :: String(foo)它与std :: String foo相同,即声明一个变量.我发现它绝对违反直觉,并且看不出C以这种方式工作的任何理由.我希望这会给出关于未定义标识符foo的错误.
它实际上使像token1(token2)这样的表达式具有比我之前想象的更多可能的解释.
所以我的问题是:这种恐怖的原因是什么?这个规则什么时候真的有必要?
附:抱歉这个措辞不好的标题,请随时改变它!
并且,类似地,对于功能,在[dcl.ambig.res]:
因此:
前者不能是宣言.后者可以是一个声明,带有一组冗余的括号.因此,前者不是宣言而后者是宣言.
根本的问题是,语法,声明者可以从a开始(这可能使它与函数式显式类型转换无法区分.而不是提出任意复杂的规则来试图确定用户的意思,语言只选择一个,并且用户可以轻松修复代码以实际执行他的意思.
以上是大佬教程为你收集整理的c – 为什么使用带有默认构造函数的括号会导致创建变量?全部内容,希望文章能够帮你解决c – 为什么使用带有默认构造函数的括号会导致创建变量?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。