Swift-2: class & struct区别

132 阅读1分钟

1: Swift class & struct

> 1: class 是引用类型、truct是类型
> 2: class 可以被继承、struct不可以被继承
> 3: class中的每一个成员变量都必须被初始化不然编译器会报错;strcut不需要初始化、编译器会自动帮我们生成init函数、给变量赋值一个默认值。


### 引用类型 & 值类型
引用类型:将一个对象赋值给另外一个对象的时候、系统不会对此对象进行拷贝、而是将指向这个对象的指针赋值给另外一个对象,当修改其中一个对象的值时、另外一个对象的值也随之改变。

值类型:将一个对象赋值给另外一个对象的时候、会对此对象进行拷贝、赋值一份副本给另外一个对象、在修改其中一个对象的值的时候、不影响另外一个对象。



### 代码案例:
Class Person {
    var name = "class"
    var age = 2020
}

void main {
    let a = Person()
    print("name=\(a.name);  age=\(a.age)") /// class; 2020
    
    var b = a
    b.name = "b-class"
    b.age = 2021
    print("b-name=\(b.name); age=\(b.age)") /// b-class; 2021
    print("a-name=\(a.name); age=\(a.age)") /// b-class; 2021
}

Struct Model {
    var name = "struct"
    var age = 1
}

void main {
    let a = Model()
    print("a-name=\(a.anme); age=\(a.age)") /// struct; 1
    
    let b = a
    b.name = "b-struct"
    b.age = 2
    print("b-name=\(b.name); age=\(b.age)") /// b-struct; 2
    print("a-name=\(a.name); age=\(a.age)") /// struct; 1
}