使用类和结构

时间:2011-08-08 12:49:48

标签: c++ class struct

  

可能重复:
  When should you use a class vs a struct in C++?
  What are the differences between struct and class in C++

struct X{

};

class X{

};

在C ++中,classstruct可以完成相同的任务。我的问题是我应该在哪里使用classstruct

5 个答案:

答案 0 :(得分:4)

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

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

但基本上你使用结构的任何地方都可以使用一个类,反之亦然,所以它取决于你使用什么。通常,当你有方法时,更常见的是使用类,当你只有数据时,结构更常用。

我想说如果你想让所有数据成员都是公共的,而你没有方法,那么就使用一个结构。否则使用一个类。但这只是个人偏好。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

structs将成员公开为默认类,默认情况下,类会将成员私有化。

Personnaly我将struct用于非常小的容器。

我通常使用带有getter&amp ;;的私人成员的课程。 setter方法

答案 3 :(得分:1)

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

  

在C ++中,同样的任务可以通过类和结构来完成。

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

当我不想明确地写struct时,我通常会使用public,尤其是当我编写模板元编程时。

答案 4 :(得分:1)

首先是“为什么会这样?”

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

记住C ++的观点是双重的,首先是面向对象的语言,但也可以作为“更好的C”,具有更强的类型检查和许多其他好处。但是,为了保持向后兼容(并且确实为了改善这种向后兼容性),结构仍然存在。

还要记住原来的C ++是cfront,它本质上是C的预编译器。你可以在原始C ++中用C语言做的任何事情,这样做很痛苦,没有保证没有一种执行规则的机制。

考虑到这一点,让我们再次看一下差异。

当你希望成员是公共的DE DEFAULT时使用struct(错误的表单,永远不要假设默认值)。但是,当你真的想要一些行为类似于C结构的东西时,也可以使用结构。它通常只有很少的方法,如果有的话,它通常没有运算符。这不是语言的要求,它被许多(如果不是大多数)C ++程序员认为是很好的形式。如果您真的想要一个类的所有功能,请使用类。

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

示例:

class A
{
  int i;
};

struct B
{
  int j;
};

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

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