千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:深圳千锋IT培训  >  技术干货  >  C语言的structure和类有什么区别?

C语言的structure和类有什么区别?

来源:千锋教育
发布人:xqq
时间: 2023-10-19 21:28:29

一、C语言的structure和类的区别

​1、声明时的关键字不同,结构是 struct ,而类是 class

​2、结构是值类型,存储在栈中,类是引用类型,存储在托管堆中,结构在声明的时候就已经为其分配栈上的内存了,而类需要用new为其分配堆上的内存。

3、结构是隐式密封的,不能使用 sealed (只能在当前项目中访问,不能继承只能实例化) 和 abstract (只能在当前项目中访问,不能实例化只能继承) 修饰符,结构体不能被继承,所以在调用结构方法时不需要查找 vtable 虚函数继承表,类可以被继承。

​4、结构中的实例字段只能声明不能赋值,而类没有限制。结构只声明没有用 new 进行初始化时,可以给它的实例字段直接赋值,而类不行。

​5、结构没有析构函数,结构中的方法不能用 virtual 和 abstract 修饰符,但是可以用 override 修饰,用来重写父类的方法。

6、结构不能显示给出默认构造函数(无参构造函数),无论有没有自定义构造,默认构造都隐式存在,而类中有自定义的构造函数时,默认构造会被隐藏,想要调用默认构造,必须显示给出默认构造。

7、结构可以使用属性,但是属性和构造函数不能同时存在。

​8、结构的自定义构造函数必须初始化所有的实例字段和没有初始化的非静态属性,类没有限制。

延伸阅读:

二、结构的使用场景

1、结构是值类型在栈中,栈的存取速度比堆快,但是容量小,适合轻量级的对象,比如点、矩形、颜色;

2、如果需要描述少量字段,不需要继承,就用结构;

3、在变量传值的时候,希望传递对象的是拷贝,而不是对象的引用地址,这个时候就可以使用结构。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

LAMP和hadoop的关系是什么?

2023-10-19

大数据平台能力有哪些内容?

2023-10-19

数字经济和大数据时代有什么区别?

2023-10-19

最新文章NEW

cs与bs架构的区别与优缺点?

2023-10-19

递归和递推有哪些区别?

2023-10-19

error和exception区别?

2023-10-19

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>