可能重复:
为什么没有调用构造函数?
我正在使用 Visual Studio 2012,假设 Test 是一个类
class Test
{
};
当我创建一个新的Test实例时,以下两种方式有什么区别?
方式1
Test t;
方式2
Test t();
我在下面的代码中得到了这个问题,最初,我在方式 2 中定义了一个 A 的实例,我只得到一个错误,因为 B 没有提供默认构造函数,但是当我在方式 1 中定义它时,我得到了一个额外的错误。
class B
{
B(int i){}
};
class A
{
A(){}
B b;
};
int main(void)
{
A a(); // define object a in way 2
getchar() ;
return 0 ;
}
如果我在方式 1 中定义一个
A a;
我会得到另一个错误说
错误 C2248:“A::A”:无法访问在“A”类中声明的私有成员
所以我想这两种方式之间一定存在一些差异。