一句话:C++中保留struct主要是为了兼容C
c语言编程单位是函数
,语句
是程序的基本单元。
而C++语言的编程单位是类
。
从c到c++的设计 从过程设计为中心
向以数据组织为中心
转移。
C中的struct
- 因为C是面向过程编程,默认数据和数据的操作是分开的,struct就被当作是一种数据类型,其内部不能定义函数
C++中的struct
C++中struct和class的区别很小,保留struct主要是为了向下兼容,因此C++中保留了很多C的东西
C++对struct的扩展
- struct可以包括成员函数
- struct可以实现继承
- struct可以实现多态
C++中struct和class的区别
1. 默认继承权
- class默认是
private继承
, struct默认是public 继承
- struct可以继承class,同样class也可以继承struct
- 默认的继承访问权限是看子类到底是用的struct还是class
2. 默认访问权限
- struct默认的数据访问控制是
public访问权限
class作为对象的实现体,它默认的成员变量访问控制是private访问权限
3. 定义模板参数
- class关键字还用于定义模板参数struct不能
4. 使用大括号{}的区别
- class和struct如果定义了构造函数就都不能用大括号进行初始化
- 如果没有定义构造函数,struct可以用大括号初始化。
- 如果没有定义构造函数,且所有成员变量全是public的话,class可以用大括号初始化。