gpt4 book ai didi

c++ - 为什么将括号与默认构造函数一起使用会导致创建变量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:46 24 4
gpt4 key购买 nike

看完 Louis Brandy 在 CppCon 2017 上的演讲后,我震惊地发现这段代码实际上可以编译:

#include <string>

int main() {

std::string(foo);

return 0;
}

出于某种原因 std::string(foo) 它与 std::string foo 相同,即声明一个变量。我发现它绝对违反直觉,并且看不出 C++ 以这种方式工作的任何理由。我希望这会给出有关未定义标识符 foo 的错误。

它实际上使像 token1(token2) 这样的表达式比我之前想象的有更多可能的解释。

所以我的问题是:造成这种恐怖的原因是什么?什么时候真正需要这条规则?

附言抱歉,标题措辞不佳,请随时更改!

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com