C++学习笔记15 - struct、class、const、mutable

本文详细探讨了C++中struct与class的区别,包括成员权限、继承特性和初始化方式,并指出在C++中两者差异较小,但面向对象编程推荐使用class。此外,文章还介绍了const常函数的概念及其目的,以及mutable关键字如何允许在const常函数中修改特定成员变量。总结了class的前置声明和inline成员函数的使用注意事项。
摘要由CSDN通过智能技术生成

一、struct和class的区别

1、C和C++中struct的区别

  • C中不支持成员函数(只能通过函数指针成员变量间接支持),而C++源生支持
  • C中不支持static成员,而C++中支持。
  • 访问权限,C中默认public,c++中默认public,但是可以显式指定public/private/protected 三者之一
  • 继承特性上,C中不支持(只能通过结构体包含来间接实现),而c++源生支持,且struct和class可以互相继承
  • 初始化方面,C中靠初始化式(gcc扩展了初始化语法),而c++靠构造函数所以初始化更自由可定制化

2、c++中struct和class的区别

  • 默认成员权限,struct默认public,class默认private
  • 继承关系的权限管控,struct默认public,class默认private
  • struct和class交叉继承时,默认的权限管控取决于子类而不是基类
  • 模板相关使用都用class,而不用struct了

3、总结

  • c++中struct和class差别不大,大多数情况下都可以直接替换使用而不出错
  • c++中struct其实有点“人格分裂”,它既要兼容C中的struct,又要像c++的class<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值