有没有什么好的理由在C++中调用默认构造函数时,一组空的圆括号(括号)无效?
MyObject object; // ok - default ctor
MyObject object(blah); // ok
MyObject object(); // error
Run Code Online (Sandbox Code Playgroud)
我似乎每次都自动输入"()".是不是有一个很好的理由不允许这样做?
c++ constructor c++-faq default-constructor most-vexing-parse
#include <iostream>
using namespace std;
class CTest
{
int x;
public:
CTest()
{
x = 3;
cout << "A";
}
};
int main () {
CTest t1;
CTest t2();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
CTest t1当然会打印"A".
但似乎没有任何事情发生在t2(),但代码运行良好.
那么我们在没有参数的情况下使用这些括号吗?或者为什么我们这样使用呢?