【发布时间】:2023-03-03 20:55:01
【问题描述】:
#include <iostream>
using namespace std;
class CTest
{
int x;
public:
CTest()
{
x = 3;
cout << "A";
}
};
int main () {
CTest t1;
CTest t2();
return 0;
}
CTest t1 当然会打印“A”。
但是在 t2() 似乎什么也没发生,但代码运行良好。
那么我们是否使用那些没有参数的括号?或者为什么我们可以这样使用它?
【问题讨论】:
-
在 C++ 中是 the most vexing parse
-
@PeterWood:我个人对此持异议。从历史上看,“最令人头疼的解析”仅指在初始化器出现歧义的情况下,初始化器是一个临时初始化的值,例如
CTest t2(CTest());而不是这种更简单的情况。 -
@CharlesBailey 'related to the most vexing parse' 会是一个更好的表达方式。谢谢。
标签: c++ constructor