C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++中结构体与类的区别

C++中结构体与类的使用区别及说明

作者:IT.Husky

这篇文章主要介绍了C++中结构体与类的使用区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

在参与以C++为编程基础的项目应用中总会遇到结构体类型与类的数据类型,但是其具体应用区别模糊不清

现将其区别总结如下(先介绍C和C++中结构体的不同,再对比C++中结构体与类的区别)

一、C和C++中结构体的不同

(1)C语言中的结构体不能为空,否则会报错

C语言中要求一个结构或联合至少有一个成员。C语言中,空结构体的大小为0,而C++中空结构体(属于空类)的大小为1

(2)C语言中的结构体只涉及到数据结构,而不涉及到算法

在C语言中数据结构和算法是分离的。换句话说就是C语言中的结构体只能定义成员变量,但是不能定义成员函数

然而在C++中既可以定义成员变量又可以定义成员函数, C++中的结构体和类体现了数据结构和算法的结合

不过虽然C语言的结构体中不能定义成员函数,但是却可以定义函数指针,不过函数指针本质上不是函数而是指针,所以总的来说C语言中的结构体只是一个复杂数据类型 ,只能定义成员变量,不能定义成员函数,不能用于面向对象编程

(3)C语言中定义结构变量时不可省略struct关键字,C++可以省略

在C语言中使用struct定义的结构体中在定义变量的时候,struct不能省略

但是在C++之中则可以省略struct

二、C++中结构体与类的区别

C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能

既然这些它都能实现,那它和class还能有什么区别?

最本质的一个区别就是默认的访问控制: 

默认的继承访问权限struct是public的,class是private的

C++中,不使用结构体丝毫不会影响程序的表达能力。C++之所以要引入结构体,是为了保持和C程序的兼容性

但有时仍会在C++中使用结构体,是因为可以使用结构体将不同类型数据组成整体,方便于保存数据(若用类来保存,因类中成员默认为私有,还要为每个数据成员特定函数来读取和改写各个属性,比较麻烦)

struct可以继承class,同样class也可以继承struct

struct是一种数据结构的实现体,虽然它是可以像class一样的用。我依旧将struct里的变量叫数据class内的变量叫成员,虽然它们并无区别

三、总结

牛人总结:

(1) 在表示诸如点、矩形等主要用来存储数据的轻量级对象时,首选struct

(2) 在表示数据量大、逻辑复杂的大对象时,首选class

(3) 在表现抽象和多级别的对象层次时,class是最佳选择 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文