C++ all differences between 'struct' and 'class'?
Possible Duplicate:
What are the differences between struct and class in C++
号
我过去认为C++类之间唯一的区别是默认的类成员访问修饰符和LAID-OUT-O-C保证。
结果发现我错了,因为这段代码无法编译:
1 | class { int value; } var = { 42 }; |
鉴于此:
1 | struct { int value; } var = { 42 }; |
号
我不知道为什么会有不同,但是显然在Visual C++ 2008中:
error C2552:
'var' : non-aggregates cannot be initialized with initializer list
号
所以,是的,我会在重复的问题上问很多次(希望没有重复的答案!):
C++中结构和类之间的区别是什么?当然,如果你发现我在其他问题上遗漏了一些东西,请随意结束这个问题——我当然会错过。但我没有看到在任何答案中讨论这个问题,所以我想我会问。
您只能对聚合1使用
该标准在第8.5.1/1节中规定,
An aggregate is an array or a class (clause 9) with no user-declared
constructors (12.1), no private or protected non-static data members
(clause 11), no base classes (clause 10), and no virtual functions
(10.3).
号
1。嗯,我的意思是,在C++ 03中,你可以只使用EDCOX1,0,用于聚合,但是在C++ 11中,你可以使用EDCOX1,0,甚至使用非聚集(如果非聚集类被正确地执行来处理这个)。
另请参见此了解详细答案(在
- 通过大括号的赋值是什么?它能被控制吗?
这不是
1 2 | class { public: int value; } var = {42}; // compiles struct { private: int value; } var = {42}; // error |
区别在于公共的和私人的。
试试这个:
1 | class { public: int value; } var = { 42 }; |
号
类的成员似乎是私有的,而继承也是私有的,因为结构是公共的。
但是,其他人必须给你更多的细节,对不起。