结构和类之间的区别

时间:2011-10-14 01:00:49

标签: c++ struct

  

可能重复:
  What are the differences between struct and class in C++

我已完成作业,并在Google上提供了不同的答案。 有人说结构没有继承,有些人认为结构没有访问说明符,而有些人说结构没有继承权 那么有人可以澄清一下C和C ++中结构和类之间的差异,以及C和C中结构之间的区别。 C ++。

2 个答案:

答案 0 :(得分:23)

在C ++中,结构和类之间的唯一区别是结构成员默认是公共的,默认情况下类成员是私有的。

然而,作为一种风格问题,最好将struct关键字用于可能合理地成为C(或多或少POD类型)中的结构的东西,以及{ {1}}关键字,如果它使用C ++特定的功能,如继承和成员函数。

C没有课程。

C结构不能使用特定于C ++的功能。

修改

问题7.9 C++ FAQ Lite有这样的说法:

  

默认情况下,class的成员和基类为struct,   在public中,它们默认为class。注意:你应该做   您的基类明确 privatepublicprivate,   而不是依赖默认值。

     

protectedstruct在其他方面功能相同。

     

好的,足够的那个干净的技术谈话。情感上,大多数   开发人员对classclass进行了强有力的区分。   一个struct只是感觉就像一堆开放的小块一样   在封装或功能方面。 struct 感觉就像一个   生活和负责任的社会成员,提供智能服务,   强大的封装屏障和良好定义的界面。以来   这可能是大多数人已经拥有的内涵   如果您的类只有很少的方法,请使用class关键字   并且有struct个数据(这些东西存在于精心设计的中   系统!),但你应该使用public关键字。

并引用Stroustrup的“The C ++ Programming Language”,第4版,第16.2.4节:

  

S 的这两个定义是可以互换的,尽管它是   通常明智地坚持一种风格。你使用哪种风格取决于   情况和品味。我倾向于将 struct 用于我的类   被认为是“只是简单的数据结构”。如果我认为一个班级是“a   具有不变量的正确类型,“我使用。构造函数和   即使对于* struct * s,访问函数也非常有用,但是作为一个   速记而不是不变量的保证。

答案 1 :(得分:3)

在C中,类不存在。在C ++中,结构体具有public的默认访问说明符,而类默认为private

C和C ++中的结构有几个不同之处;在C ++中,它们可以从其他类或结构继承,它们可以包含成员函数,并且不需要使用详细的类型说明符引用它们的名称。