在诸如此类的情况下,在结构上使用类是否有任何优势?(注意:它只会保存变量,永远不会有函数)
class Foo { private: struct Pos { int x, y, z }; public: Pos Position; };
与:
struct Foo { struct Pos { int x, y, z } Pos; };
类似的问题:
什么时候应该在C++中使用类vs结构?
C++中struct和class之间有什么区别?
我什么时候应该使用结构而不是类?
Evan Teran.. 21
使用一个优于另一个没有真正的优势,在c ++中,结构和类之间的唯一区别是它的成员的默认可见性(结构默认为public,类默认为private).
就个人而言,我倾向于选择POD类型的结构,并使用类来完成其他任何事情.
编辑:litb在评论中提出了一个很好的观点,所以我将在这里引用他:
另一个重要的区别是,默认情况下,struct派生自其他类/ struct public,而类默认派生私有派生.
另一个重要的区别是,默认情况下,struct派生自其他类/ struct public,而类默认派生私有派生. (6认同)
Roger Nelson.. 8
一方面是结构通常用于聚合初始化数据结构,因为所有非静态数据成员无论如何都必须是公共的(C++ 03,8.5.1/1).
struct A { // (valid) { int a; int b; } x = { 1, 2 }; struct A { // (invalid) private: int a; int b; } x = { 1, 2 }; class A { // (invalid) int a; int b; } x = { 1, 2 }; class A { // (valid) public: int a; int b; } x = { 1, 2 }; class A { // (invalid) public: int a; private: int b; } x = { 1, 2 };
CB Bailey.. 6
struct
并且在C++中class
表示完全相同的事情,除了struct成员和base的默认访问是公共的,而对于类是私有的.我倾向于为只有公共成员的类和其他所有类的类选择struct,但它只是一个样式问题.
使用一个优于另一个没有真正的优势,在c ++中,结构和类之间的唯一区别是它的成员的默认可见性(结构默认为public,类默认为private).
就个人而言,我倾向于选择POD类型的结构,并使用类来完成其他任何事情.
编辑:litb在评论中提出了一个很好的观点,所以我将在这里引用他:
另一个重要的区别是,默认情况下,struct派生自其他类/ struct public,而类默认派生私有派生.
一方面是结构通常用于聚合初始化数据结构,因为所有非静态数据成员无论如何都必须是公共的(C++ 03,8.5.1/1).
struct A { // (valid) { int a; int b; } x = { 1, 2 }; struct A { // (invalid) private: int a; int b; } x = { 1, 2 }; class A { // (invalid) int a; int b; } x = { 1, 2 }; class A { // (valid) public: int a; int b; } x = { 1, 2 }; class A { // (invalid) public: int a; private: int b; } x = { 1, 2 };
struct
并且在C++中class
表示完全相同的事情,除了struct成员和base的默认访问是公共的,而对于类是私有的.我倾向于为只有公共成员的类和其他所有类的类选择struct,但它只是一个样式问题.