当前位置:  开发笔记 > 编程语言 > 正文

Class vs Struct仅用于数据?

如何解决《ClassvsStruct仅用于数据?》经验,为你挑选了3个好方法。

在诸如此类的情况下,在结构上使用类是否有任何优势?(注意:它只会保存变量,永远不会有函数)

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,但它只是一个样式问题.



1> Evan Teran..:

使用一个优于另一个没有真正的优势,在c ++中,结构和类之间的唯一区别是它的成员的默认可见性(结构默认为public,类默认为private).

就个人而言,我倾向于选择POD类型的结构,并使用类来完成其他任何事情.

编辑:litb在评论中提出了一个很好的观点,所以我将在这里引用他:

另一个重要的区别是,默认情况下,struct派生自其他类/ struct public,而类默认派生私有派生.


另一个重要的区别是,默认情况下,struct派生自其他类/ struct public,而类默认派生私有派生.

2> Roger Nelson..:

一方面是结构通常用于聚合初始化数据结构,因为所有非静态数据成员无论如何都必须是公共的(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 };



3> CB Bailey..:

struct并且在C++中class表示完全相同的事情,除了struct成员和base的默认访问是公共的,而对于类是私有的.我倾向于为只有公共成员的类和其他所有类的类选择struct,但它只是一个样式问题.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有