可能重复:
What are the differences between struct and class in C++
我已完成作业,并在Google上提供了不同的答案。 有人说结构没有继承,有些人认为结构没有访问说明符,而有些人说结构没有继承权 那么有人可以澄清一下C和C ++中结构和类之间的差异,以及C和C中结构之间的区别。 C ++。
答案 0 :(得分:23)
在C ++中,结构和类之间的唯一区别是结构成员默认是公共的,默认情况下类成员是私有的。
然而,作为一种风格问题,最好将struct
关键字用于可能合理地成为C(或多或少POD类型)中的结构的东西,以及{ {1}}关键字,如果它使用C ++特定的功能,如继承和成员函数。
C没有课程。
C结构不能使用特定于C ++的功能。
修改强>:
问题7.9 C++ FAQ Lite有这样的说法:
默认情况下,
class
的成员和基类为struct
, 在public
中,它们默认为class
。注意:你应该做 您的基类明确private
,public
或private
, 而不是依赖默认值。
protected
和struct
在其他方面功能相同。好的,足够的那个干净的技术谈话。情感上,大多数 开发人员对
class
和class
进行了强有力的区分。 一个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 ++中,它们可以从其他类或结构继承,它们可以包含成员函数,并且不需要使用详细的类型说明符引用它们的名称。