结构和等级之间的差异
内容
结构和类都提供了一种创建自定义数据类型的方法,该数据类型可进一步用于创建实例。 C ++扩展了结构的作用以创建类。结构和类在所有方面都是相似的,唯一的区别是结构默认情况下将其所有成员都称为“公共”,而类默认情况下将其所有成员都称为“私有”。让我们使用比较表来研究结构和类之间的区别。
- 比较表
- 定义
- 关键差异
- 相似点
- 结论
比较表
比较基础 | 结构体 | 类 |
---|---|---|
基本的 | 如果未声明访问说明符,则默认情况下所有成员都是公共的。 | 如果未声明访问说明符,则默认情况下所有成员都是私有的。 |
宣言 | struct structure_name { 类型struct_element 1; 类型struct_element 2; 输入struct_element 3; . . . }; | 类class_name { 数据成员; 成员函数; }; |
实例 | 结构的实例称为结构变量。 | 类的实例称为对象。 |
结构定义
结构是不同数据类型的变量的集合,所有变量均由一个名称引用。结构声明形成用于创建结构实例的模板。该结构声明如下。
struct sname {类型struct_element1;类型struct_element2;类型struct_element3; 。 。 。 } variable1,variable2,。 。 。;
关键字“ struct”向编译器定义正在声明的结构。 “名称”代表为结构指定的名称。结构声明始终以分号终止,因为它被视为语句。您可以按照上述代码(variable1,variable2)中的说明,在结构终止之前声明该结构的实例,也可以在main()中声明该结构的实例,方法是先在结构名称之前写入实例名称。
//示例。 main(){sname S1,S2; }
S1和S2是该结构的实例。结构的实例称为“结构变量”。可以使用点(。)运算符通过结构变量访问在结构主体内部声明的元素。
//示例S1。 struct_element1;
- 也可以创建结构数组,为此,您首先需要声明一个结构,然后声明该类型的数组。
// sample struct sname sarray;
上面的语句创建了一个名称为“ sarray”的数组,其中包含十个变量,每个变量的组织方式均与“ sname”中的定义相同。
- 您可以将结构成员传递给函数,也可以将整个结构传递给函数。
- 像整数指针,数组指针一样,也可以通过在结构变量名称的前面放置“ *”来声明结构指针。
注意:
“结构”元素存储在连续的存储位置中。
类的定义
OOP中的类定义了一个新类型,其中包含数据成员和成员函数,用于访问类的数据成员。类的实例称为“对象”,每个对象具有与类相同的组织。该类是逻辑抽象,而对象具有物理存在。该类在语法上类似于该结构。该类可以声明为如下。
类class_name {私有数据成员和成员函数。 access_specifier类型为data_member;输入mem_funct(parameter list){。 。对象列表;
在这里,类是一个关键字,它向编译器声明一个类已被声明。 OOP的主要特征是数据隐藏,这是通过提供“公共”,“私有”,“受保护”三个访问说明符来实现的。如果在声明数据成员或成员函数时未在类中指定任何访问说明符,则默认情况下将全部视为私有。公共访问说明符允许程序的其他部分访问函数或数据。该类的私有成员只能由该类的成员访问。受保护的访问说明符在继承期间应用。声明访问说明符后,就不能在整个程序中对其进行更改。
这些对象不过是类的实例。同一类的对象可以使用点(。)运算符访问该类的成员。
//object.mem_funct(arguments);
- 该对象也可以作为参数传递给函数。
- 也可以创建指向对象的指针。
- 结构和类之间的主要区别在于,默认情况下,结构的所有成员都是公共的,而默认情况下,类的所有成员都是私有的。
相似之处:
- 在C ++中,结构和类在语法上都是等效的。
- 结构和类都可以声明其某些成员为私有。
- 结构或类的名称可以用作独立类型。
- 结构和类都支持继承机制。
结论:
C语言中的结构有一些限制,因为该结构不允许隐藏数据,“ struct”数据类型不能被视为内置类型,结构不支持继承。 C ++中的结构克服了这些限制。在C ++中,类是结构的扩展版本。程序员发现使用类轻松保存数据和功能,而仅使用结构保存数据很容易。