C++'struct'和'class'之间的所有区别?

Meh*_*dad 6 c++ struct class

可能重复:
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'无法使用初始化列表初始化非聚合

所以,是的,我会问多次重复的问题(希望没有重复的答案!):

什么是所有的C++结构和类之间的区别是什么?

当然,如果你发现我在其他问题上遗漏了一些东西,我可以随意关闭它 - 我当然可以.但我没有看到在任何答案中都讨论过这个问题,所以我想我会问.

Naw*_*waz 15

您只能将{}初始化程序用于聚合1,而第一个不是聚合,因为它有一个private数据成员.

标准在第8.5.1/1节中说明,

聚合是一个数组或类(第9节),没有用户声明的构造函数(12.1),没有私有或受保护的非静态数据成员 (第11节),没有基类(第10节),没有虚函数(10.3) ).

1.嗯,我的意思是,在C++ 03中,你只能{}用于聚合,但在C++ 11中,你{}甚至可以使用非聚合(如果非聚合类被正确实现来处理这个).

另请参阅此详细解答(在{}初始化程序中):

  • 哇,我现在感觉很傻.添加`public:`修复了这个问题.+1谢谢.*捂脸* (4认同)

归档时间:

查看次数:

1956 次

最近记录:

14 年,2 月 前