【发布时间】:2012-10-02 07:43:30
【问题描述】:
我正在使用 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'
所以我想这两种方式之间肯定有一些区别。
【问题讨论】:
标签: c++ most-vexing-parse