令人困惑的解析错误:解开构造函数参数中括号的难题
遇到神秘错误消息“请求成员‘function1’时在“myObj”中,它是非类类型“MyClass ()()””,在尝试编译 C 程序时,开发人员可能会发现自己正在思考这个令人困惑的解析错误背后的原因。有问题的源代码包含一个类,其构造函数缺少任何参数,使用以下行声明:
MyClass myObj();
执行编译过程时,出现上述错误,表明成员函数“function1”不能可通过对象“myObj”访问,因为“myObj”被视为非类类型。为了解决这个问题,代码修改为:
MyClass myObj;
这就提出了一个问题:构造函数声明中缺少参数是否需要省略括号。虽然以前在 C 中使用过使用括号的空构造函数声明,但语言标准采取了决定性的立场:像所提供的代码中那样的歧义始终得到解决,有利于函数声明。
值得注意的是在某些情况下,例如在 new 表达式中或构造值初始化的临时对象时,允许使用空括号初始值设定项。然而,在没有参数的构造函数声明的情况下,标准坚决要求省略括号。这可以确保清晰度并防止因语法歧义而可能引起的潜在混乱。
以上是为什么我不能在没有参数的构造函数声明中使用括号?的详细内容。更多信息请关注PHP中文网其他相关文章!