美文网首页
661,struct 与 class 的区别(重点:最详细的答案

661,struct 与 class 的区别(重点:最详细的答案

作者: 枫叶1234 | 来源:发表于2022-03-07 07:04 被阅读0次

    1 struct是值类型,class是引用类型:
    值类型的变量直接包含它们的数据,对于值类型都有它们自己的数据副本,因此对一个变量操作不可能影响另一个变量.值类型包括结构体 (数组和字典),枚举,基本数据类型 (boolean, integer, float等).
    引用类型的变量存储对他们的数据引用,对一个变量操作可能影响另一个变量.
    二者的本质区别:struct是深拷贝;class是浅拷贝。
    2 property的初始化不同:
    class 在初始化时不能直接把 property 放在默认的 constructor 的参数里,而是需要自己创建一个带参数的 constructor;而struct可以,把属性放在默认的 constructor 的参数里。
    3 变量赋值方式不同:
    struct是值拷贝;class是引用拷贝。
    4 immutable变量:
    swift的可变内容和不可变内容用var和let来甄别,如果初始为let的变量再去修改会发生编译错误。struct遵循这一特性;class不存在这样的问题。
    5 mutating function:
    struct 和 class 的差別是 struct 的 function 要去改变 property 的值的时候要加上 mutating,而 class 不用。
    6 继承:
    struct不可以继承,class可以继承。
    7 struct比class更轻量:
    struct分配在栈中,class分配在堆中。

    相关文章

      网友评论

          本文标题:661,struct 与 class 的区别(重点:最详细的答案

          本文链接:https://www.haomeiwen.com/subject/hvzwrrtx.html