struct与class

一句话:C++中保留struct主要是为了兼容C

c语言编程单位是函数语句是程序的基本单元。
而C++语言的编程单位是
从c到c++的设计 从过程设计为中心向以数据组织为中心转移。

C中的struct

  • 因为C是面向过程编程,默认数据和数据的操作是分开的,struct就被当作是一种数据类型,其内部不能定义函数

C++中的struct

  • C++中struct和class的区别很小,保留struct主要是为了向下兼容,因此C++中保留了很多C的东西

  • C++对struct的扩展

  1. struct可以包括成员函数
  2. struct可以实现继承
  3. 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可以用大括号初始化。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。