C++中结构和类的区别

143 阅读3分钟

在这篇文章中,我们将试图解释结构和类的区别。这是一个相当有趣的争论,在这篇文章中,你将了解到结构体到底能做什么,以及它们与有多相似。


了解结构体

关于结构体有一些常见的误解,因为大多数人都不怎么使用它们,而是使用类。人们通常使用结构体来保存一堆变量,而不知道它们还可以用来做什么。因此,在我们继续之前,让我们快速回顾一下结构体与类的一些共同点。

1.它们可以容纳函数。有些人可能会感到惊讶,因为结构也可以将函数作为其成员,其使用方式与类相同。

2.2.它们可以继承自其他结构

3.3.它们也可以有构造函数和析构函数!

4.结构体也支持访问修改器

在这一点上,你可能想知道在C++中类和结构体之间是否有区别。这就是它们的相似性。在下一节中,我们将看看它们实际上有哪些区别。

注意:C语言的结构体和C++语言的结构体有很大的不同。由于C++是一种OOP语言,因此C++结构有几个OOP属性是C结构所不具备的,例如将函数作为成员、构造函数和析构函数以及继承。


类和结构的区别

类和结构体的工作原理只有两个微小的区别,如下所示。

默认的访问指定器。在C++中,结构体默认将所有成员变量和函数都声明为公共的。对于那些不知道的人来说,这意味着他们可以通过使用点运算符被结构体之外的函数访问。

另一方面,在类中,所有的成员变量和函数默认为私有,这意味着它们只能被类本身的函数(其他成员函数)访问。

继承。另一个微小的区别是,当继承发生在结构中时,默认是公共继承。另一方面,对于类来说,默认的继承是私有的。

要了解更多关于私有和公有继承的信息,请查看我们关于类中的继承的教程。


评估类和结构体之间的区别

所以我们已经看了一下两者之间的区别。现在的困惑是,什么地方应该使用结构体,什么地方应该使用类。

如果你注意到了,前面提到的两个区别,实际上都没有对它们的功能产生任何影响。你所需要做的就是在结构体上打上一个私有访问修饰符,然后它就突然变得和类一样了。

幸运的是,我们可以遵循一些准则来决定在特定的情况下使用结构体还是类。

  1. 如果你想向后兼容C语言,那么你将不得不使用Structs,但不包括整个OOP部分。一个没有构造器和函数等OOP特性的结构被称为 "P.O.D",即Plain Old Datatype的意思。

    以这种方式定义Struct将确保它与C语言兼容,这在与C语言库对接时可能会很有用。

2.2.其次,作为良好的实践,当你想要只有几个变量的对象(基本上是一个POD)时,请使用结构体。另一方面,当你想使用构造器、析构器、继承等时,使用类。这有助于在它们的用途之间保持一定的区别。


这标志着 "C++中结构体和类的区别 "这篇文章的结束。我们非常欢迎对CodersLegacy的任何建议或贡献。有关教程内容的问题可以在下面的评论区提出。