结构体和类的区别

相同点:

  • 都可以将多个属性封装为一个整体。

不同点

  1. 结构体只能封装数据,而类不仅可以封装数据还可以封装行为(封装方法)。
  2. 结构体变量分配在栈空间(如果是一个局部变量的情况下),而对象分配在堆空间。
  • 栈的特点: 空间相对较小,但是存储在栈中的数据访问的效率更高一些。
  • 堆的特点: 空间相对较大,但是存储在堆中的数据访问的效率相对要低。
  1. 赋值不同,结构体是值拷贝,类是对象地址。

应用场景

  1. 如果表示的这个实体不仅是由多个数据组成,这个实体还有行为,不解释只能使用类。
  2. 如果表示的实体没有行为,光有属性
    • 如果属性较少,只有几个,那么这个时候定义为结构体,分配在 栈提高效率。
    • 如果属性较多,不要定义结构体,因为这样结构体变量会在栈中占据很大一块空间反而影响效率。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 相同点: 都可以将多个数据封装为一个整体 结构体也可以被认为是一种特殊的类,它不存在任何函数,构造和析构函数也没有...
    coming_168阅读 1,693评论 1 5
  • 结构体和类的区别 1、结构体只能封装属性,类却不仅可以封装属性也可以封装方法。 2、结构体变量分配在栈,而OC对象...
    愤怒的牛牛阅读 897评论 0 1
  • 1、结构体只能封装属性,类却不仅可以封装属性也可以封装方法。如果一个封装的数据有属性也有行为,就只能用类了。 2、...
    说不出口的喵阅读 261评论 0 4
  • 1、结构体只能封装属性,类却不仅可以封装属性也可以封装方法。如果一个封装的数据有属性也有行为,就只能用类了。 2、...
    BookKeeping阅读 7,245评论 1 8
  • 一、定义一个结构体 二、使用 三、结构体和OC类的区别 结构体: 只能封装属性,不能封装方法; 分配在栈上 OC类...
    程序萌阅读 263评论 0 1