C++ 结构体和类的区别

C++ 结构体和类的区别

C++中,结构体和类基本相同,只是有一些区别。安全性对于结构体和类都非常重要。结构体不安全,因为无法将其实现细节隐藏起来,而类是安全的,可以隐藏其编程和设计细节。在本文中,我们将讨论C++中结构体和类的区别。但在讨论区别之前,我们将了解一下C++中的结构体和类。

C++中的结构体是什么

结构体是一组同名引用的不同数据类型的变量的 分组 。结构体声明用作创建结构体实例的模板。

语法:

结构体的语法如下所示:

Struct Structurename
{
Struct_member1;
Struct_member2;
Struct_member3;
.
.
.
Struct_memberN;
};

“struct” 关键字告诉编译器已声明了一个结构体。 “structurename” 定义了结构体的名称。由于结构体声明被视为语句,因此通常以分号结束。

C++中的类是什么

C++中的类与C结构类似,由 数据成员 列表和在类上执行的一组操作组成。换句话说,类是面向对象编程的 **构建块 class class_name { // private data members and member functions. Access specifier; Data member; Member functions (member list){ . . } };

在这个语法中,class是一个关键字,用于告诉编译器一个类已经被声明。面向对象的主要功能是数据隐藏,这是通过使用三个访问修饰符来实现的: “public”,”private”“safe” 。如果在声明数据成员或成员函数时,类中没有指定访问修饰符,它们默认被认为是私有的。

public访问修饰符允许其他人访问程序的函数或数据。类的成员只能访问类的私有成员。在继承过程中,使用safe访问修饰符。如果访问修饰符被声明,它不能再在程序中改变。

结构和类之间的主要区别

在这里,我们将讨论结构和类之间的主要区别。其中一些如下:

  • 默认情况下,结构的所有成员都是公有的。相比之下,类的所有成员都是私有的。
  • 结构将自动初始化其成员,而类的成员则使用构造函数和析构函数来初始化。
  • 当实现结构时,内存分配在堆栈上。相反,类的内存分配在堆上。
  • 结构中的变量不能在声明时初始化,但可以在类中进行初始化。
  • 任何结构成员中都不能有null值,而类变量可以有null值。
  • 结构是值类型,而类是引用类型。
  • 可以使用特殊方法描述对新数据形式进行操作的运算符。

结构和类的头对头比较

在这里,我们将讨论结构和类的头对头比较。其中一些如下:

功能 结构体
定义 结构体是由同名引用的各种数据类型的变量组成的。 在c++中,类被定义为包含在单一结构中的相关变量和函数的集合。
Basic 如果没有指定访问说明符,则所有成员都设置为’public’。 如果没有定义访问说明符,则所有成员都设置为’private’。
实例 结构实例称为“结构变量”。 一个类的实例叫做object
继承 它不支持继承。 它支持继承。
分配的内存 内存在栈上分配。 内存在堆上分配。
Nature 值类型 引用类型
目的 组织数据 数据抽象和进一步继承。
用途 它用于较小的数据量。 它用于处理大量数据。
null值 不可能的 它可以有null值。
需要构造函数和析构函数 它可能只有参数化的构造函数。 它可以包含所有类型的构造函数和析构函数。

结构体定义:

struct structure_name{
type struct_member 1;
type struct_member 2;
type struct_member 3;
.
type struct_memberN;
};

类定义:

class class_name{
data member;
member function;
};

相似之处

以下是结构体和类之间的相似之处:

  • 结构体和类都可以声明其成员为私有。
  • 结构体和类都支持继承机制。
  • 在C++中,结构体和类在语法上是相同的。
  • 可以将结构体或类的名称作为独立的类型使用。

结论

C语言的结构体存在一些限制,比如无法隐藏数据、无法将结构体数据当作内置类型以及缺乏继承支持。C++的结构体克服了这些缺点。

C++中的扩展版本结构体被称为类。程序员可以轻松地使用类来保存数据和函数,而结构体只能保存数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程