C++与C语言中struct的区别
C++中的struct对C语言中的struct进行扩充,主要区别如下
C | C++ | |
---|---|---|
成员函数 | 不能 | 可以 |
静态成员 | 不能 | 可以 |
防控属性 | 默认public,不能修改 | public\private\protected |
继承关系 | 不可以继承 | 可以从其他结构体继承 |
初始化 | 不能直接初始化数据成员 | 可以 |
C++中struct和class的相同点
1.结构体和类一样,可以有成员变量,可以有成员函数,也可以定义
public
,private
,protected
数据成员
2.结构体可以从别的结构体继承,也可以被别的结构体继承,亦可以有虚函数
3.结构体定义之后,可以像类一样用结构体名来创建对象
4.c++兼容C语言,所以c++中struct
可以当成结构体去使用
C++中struct和class的不同点
1.
class
的成员默认都是private
属性的;struct
中的成员默认都是public
属性的。
2.class
继承默认是private
继承,而struct
继承默认是public
继承。
3.class
与struct
内部结构有区别,struct
只能添加带参的构造函数,不能使用abstract
和protected
等修饰符,不能初始化实例字段。
4.class
可以使用模板,而struct
不能。
5.struct
是值类型,class
是引用类型,因此它们具有所有值类型和引用类型之间的差异。