一、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<