【发布时间】:2013-10-15 13:08:29
【问题描述】:
- 令我惊讶的是,我发现 c++ 对象的名称可以与类名相同。有人可以向我解释原因吗?
- 当我将
a类的对象声明为a a1()时,它不会引发错误,但不会调用构造函数。为什么会这样?
我的代码:
#include<iostream>
using namespace std;
class a
{
public:
a()
{
cout << "in a\n";
}
};
int main()
{
a a1();
a a;
}
【问题讨论】:
-
a1不是一个对象,而是一个函数。 -
这不是“最令人头疼的解析”。它只是一个函数声明。 most vexing parse 涉及带有临时参数的函数调用。
-
@PeteBecker 技术上是正确的,但我们没有单独的somewhat-vexing-parse 标签;)
-
@FredOverflow - 虽然问题应作为重复项关闭,但不应将其链接到与问题无关的答案,即使没有合适的标签。
-
@PeteBecker 我怀疑我们会找到涵盖他两个问题的副本。
标签: c++ class function-declaration variable-initialization