struct与class的区别

struct在C与C++中的区别

为了兼容C语言,C++中也引入了struct关键字,并对struct的功能也进行了扩展。

C语言中:
Struct是用户自定义数据类型(UDT)。struct只能是一些变量的集合体,只能定义数据成员,不能定义函数,可以封装数据却不可以隐藏数据,而且成员不可以是函数。

C++语言中:
Struct是抽象数据类型(ADT),支持成员函数的定义。struct可以当作class来用,他和C++中class的唯一的区别是,class中的成员默认是private,而struct的成员默认为public。

C++中struct与class的区别

C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,他还有其他功能。

  • struct可以包含成员函数
  • struct可以继承
  • struct可以实现多态

虽然C++中struct与class如此相似,但他们也有一定的区别:

1、默认的继承权限不同
struct默认是公有继承(public),class默认是私有继承(private)

2、默认访问权限不同
struct中默认的成员访问权限是public的,class中默认的成员访问权限是private的。

3、C++中大括号初始化问题
在这里插入图片描述
对上图中这种使用{}进行初始化的方式直接使用在struct和class初始化中是会存在问题的:

  • 如果struct和class中都定义了构造函数,就不能使用大括号对其进行初始化;
  • 如果没有定义构造函数,struct可以使用{}进行初始化;class因为数据默认为私有,不能用{}初始化,除非class的所有数据成员及函数为public时,可以使用{}进行初始化。
  • struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。

4、模板中使用不同
在模板中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。

参考:
https://blog.csdn.net/qq_37964547/article/details/81835488

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值