关于c ++:使用类和结构

Use of class and struct

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
When should you use a class vs a struct in C++?
What are the differences between struct and class in C++

1
2
3
4
5
6
7
struct X{

};

class X{

};

在C++中,同样的任务可以由EDCOX1,0,EDCOX1,1,E.我的问题是我应该在哪里使用class,在哪里使用struct


C++中结构和类的区别是:

  • 默认情况下,类的成员是私有的,而结构的成员是公共的。
  • 同样,类之间的继承在默认情况下也是私有的,结构之间的继承在默认情况下是公共的。

但基本上,无论您在哪里使用一个结构,您都可以使用一个类,反之亦然,所以使用什么取决于您自己。通常,当您有方法时,使用类更为常见,而当您只有数据时,结构更为常用。

我想说,如果您希望所有数据成员都是公共的,并且没有方法,那么就使用一个结构。否则使用类。但这只是个人喜好。


没关系,两者都是等价的。唯一的区别是,struct默认公共成员可见性和公共继承,class默认私有继承。


首先是"为什么会这样?"

我应该指出为什么在C++中支持结构。

记住C++的观点是双重的,首先是面向对象的语言,而且是一种"更强的C",具有更强的类型检查和许多其他好处。但是,为了保持向后兼容(并且确实是为了提高向后兼容性),结构被保留了下来。

还记得原来的C++是cFAX,它本质上是C的预编译程序。在C++中你可以做的任何事情都可以在C中完成,这样做是很痛苦的,没有一个机制来执行规则是没有保证的。

考虑到这一点,让我们再来看看区别。

如果希望默认情况下成员是公共的(格式错误,从不假定为默认值),请使用struct。但是,如果您真的希望某个行为类似于C结构的东西,也可以使用结构。它通常只有很少的方法(如果有的话),而且通常没有操作符。这不是语言的要求,它被许多人认为是好的形式,如果不是大多数的话,C++程序员。如果您真的想要一个类的所有功能,请使用一个类。

除了访问之外,结构和类是相同的(在声明和派生对象中)。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class A
{
  int i;
};

struct B
{
  int j;
};

class C : A
{
  // i is private to A.
};

struct D : B
{
  // j is public
};

你用这些话回答了你自己的问题:

in C++, Same task can be done by class as well as struct.

所以用任何能让你快乐的东西。

当我不想显式地编写public时,我通常使用struct,特别是在编写模板元编程时。


结构将那里的成员作为默认值获取公共成员,类将那里的成员作为默认值获取私有成员。

个人我使用结构非常小的容器。

我通常使用带有getter和setter的私有成员的类