2011-08-08 39 views

回答

2

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

1

结构到达那里成员公开作为默认的类到达那里成员私人作为默认。

Personnaly我使用结构很小的容器。

我用一般类与干将私有成员&制定者

1

你已经回答了你自己的问题,在这些话:

在C++

,同样的任务可通过类来完成,以及结构。

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

我通常使用struct,当我不想明确地写public,特别是当我写模板元编程。

4

C++中的结构和类之间的差异是:

  • 一类的成员是默认私人,而结构的成员默认都是公开的。
  • 类似地,类之间的继承默认也是私有的,并且结构之间的继承默认是公共的。

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

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

1

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

我应该指出为什么C++支持结构体。记住C++的重点是双重的,首先是作为面向对象的语言,但也作为“更好的C”,具有更强的类型检查和许多其他好处。但是,为了保持向后兼容(并且实际上改善这种向后兼容性),结构被留下了。

还记得最初的C++是cfront,它本质上是一个C语言的预编译器。任何你可以在原始C++中做的事情,你可以在C中做,只是很痛苦,没有保证没有执行规则的机制。

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

当你希望成员是公开的时使用struct BY DEFAULT(坏形式,永远不要默认)。但是,当你真的想要像C结构一样的东西时也使用一个结构。它通常只有很少的方法,并且通常没有操作员。这不是语言的要求,它只是许多(如果不是大多数)C++程序员的良好形式。如果你真的想要一个类的所有功能,请使用一个类。

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

实施例:

class A 
{ 
    int i; 
}; 

struct B 
{ 
    int j; 
}; 

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

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