为什么下面的代码会编译?
class Test
{
public:
Test(int i) {}
private:
Test();
};
int main()
{
// OK - uses Test(int i)
Test test(5);
// Error - Test() is private
// Test test2;
// Why does this compile? Test() is private!
Test test3();
}
我认为最后的instanciation将无法编译,因为no-param构造函数是私有的?
答案 0 :(得分:2)
Test test3();
是一个函数声明。它声明了一个名为test3
的{{1}}类型的函数。用C ++声明事物是可以的,即使它们从未被定义过(因为你没有试图实际调用它)。