Swift中类(Class)与结构体(Struct)区别、相同点

1.内存管理不一样,类引用类型,分配在堆上。结构体是值类型,分配在栈上。

(解释:引用类型是讲一个对象赋值给另一个对象时系统不会进行此对象的拷贝,而是将指向这个对象的指针赋值给另一个对象,当修改其中一个对象的值时,另一个对象的值也会改变。值类型是将一个对象赋值给另一个对象时,会对此对象进行拷贝,复制出一份副本给另一个对象,在修改其中一个对象的值时,不影响另外一个对象。)

2.类,有析构函数。结构体不能有析构函数。

(解释:析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存))

3.结构体构造函数会自动生成带参数的构造器。类不会对有初始化赋值生成带参数的构造器。

4.类有继承特性,结构体没有继承特性。结构体无继承特性,则无法对成员属性、成员方法、类属性、类方法进行重载。结构体的函数操作符需要static,不能使用class。

5.类中的每一个成员变量都必须被初始化,否则编译器会报错。而结构体不需要,编译器会自动帮我们生成init函数,给变量赋一个默认值。

相同点:

1.操作符函数

2.范型

3.协议采纳

4.观察器

新特性:

结构体中可以声明方法,使结构式更加灵活。

链接:https://www.jianshu.com/p/981b7fd2cf21

你可能感兴趣的:(Swift中类(Class)与结构体(Struct)区别、相同点)