可能重复:
C++中struct和class之间有什么区别
我使用到想的只有 C++类之间的差异是私营的默认类成员访问修饰符和悠闲的出样-C的保证.
事实证明我错了,因为这段代码不能编译:
class { int value; } var = { 42 };
Run Code Online (Sandbox Code Playgroud)
这样做:
struct { int value; } var = { 42 };
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么会有区别,但显然在Visual C++ 2008中:
错误C2552 ::
'var'无法使用初始化列表初始化非聚合
所以,是的,我会问多次重复的问题(希望没有重复的答案!):
当然,如果你发现我在其他问题上遗漏了一些东西,我可以随意关闭它 - 我当然可以.但我没有看到在任何答案中都讨论过这个问题,所以我想我会问.
Naw*_*waz 15
您只能将{}初始化程序用于聚合1,而第一个不是聚合,因为它有一个private数据成员.
标准在第8.5.1/1节中说明,
聚合是一个数组或类(第9节),没有用户声明的构造函数(12.1),没有私有或受保护的非静态数据成员 (第11节),没有基类(第10节),没有虚函数(10.3) ).
1.嗯,我的意思是,在C++ 03中,你只能{}用于聚合,但在C++ 11中,你{}甚至可以使用非聚合(如果非聚合类被正确实现来处理这个).
另请参阅此详细解答(在{}初始化程序中):
| 归档时间: |
|
| 查看次数: |
1956 次 |
| 最近记录: |