Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么不A a(())不工作?

为什么不A a(())不工作?

提问于 2018-03-22 21:28:31
回答 2关注 0查看 162
代码语言:javascript
运行
AI代码解释
复制
A a(B()); //declares a function

虽然这对大多数人来说直观地看起来是一个a类型对象的声明A,将一个临时B对象作为构造函数参数,但实际上它是一个a返回函数的函数的声明A,将指针指向返回的函数B并且它本身不带参数。

代码语言:javascript
运行
AI代码解释
复制
A a(); //declares a function

也属于同一类别,因为它不是一个对象,而是声明一个函数。现在,在第一种情况下,这个问题的常用解决方法是在B()该处添加一组额外的括号/括号,因为编译器会将其解释为对象的声明

代码语言:javascript
运行
AI代码解释
复制
A a((B())); //declares an object

但是,在第二种情况下,这样做会导致编译错误

代码语言:javascript
运行
AI代码解释
复制
A a(()); //compile error

我的问题是,为什么?

回答 2

萌萌呆

回答已采纳

发布于 2018-03-23 05:58:02

没有完美的答案,只是因为它没有被C++语言定义为有效的语法......所以根据语言的定义是如此。

如果有一个表达式,那么它是有效的。例如:

代码语言:javascript
运行
AI代码解释
复制
 ((0));//compiles

红月

发布于 2018-03-23 06:47:49

这个问题的最终解决方案是转移到C+11统一初始化语法。

代码语言:javascript
运行
AI代码解释
复制
A a{};
和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

为什么DisplayFormat DataFormatString不工作?

2509

win10登陆提示凭据不工作,为什么?

21.6K

为什么FileSystemWatcher不触发事件?

21.4K

登入总是说票据不工作?

1250

为什么宝塔nginx配置不生效?

0170
相关问答用户
中建数科 | 技术总监架构部总经理擅长3个领域
公司公司公司公司公司公司 | 职务职务职务职务职务职务擅长3个领域
擅长5个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档