gpt4 book ai didi

C++ Lite 问题 10.19。函数而不是变量声明

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:09 24 4
gpt4 key购买 nike

我过去遇到过这个问题 http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.19

我的问题是,写的时候

Foo x(Bar());

为什么它是“声明一个返回 Bar 对象的非成员函数”?我写了就明白了

Foo x(Bar);

但是它认为 Bar() 中的 () 意味着什么?

最佳答案

Bar() 意思是“一个不接受参数并返回 Bar 的函数”。考虑这样一个函数的声明:

Bar GetBar();

如果您从中删除函数名称,剩下的将描述函数类型。使用它的一些示例是在模板参数中;例如你可以这样写:

std::function<int(float)> f1;
std::function<Bar()> f2;

希望这能大致解释语法。现在这在这种特殊情况下意味着什么。当函数类型用作函数参数类型时,它会自动替换为函数指针类型。所以等效(但更清晰)的声明是:

Foo x(Bar(*)());

关于C++ Lite 问题 10.19。函数而不是变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1215342/

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