Swift语言的结构体和类的设计有着本质区别,不像C++,结构体struct和类class是等价词。
- struct是值类型,class是引用类型。
值类型意味着拷贝都是副本,而引用类型意味着是复制引用。 - struct不能继承,class可以继承其它class。
- struct默认可以构建一个初始化函数,但没有析构函数(资源自动释放),而class可以有构造函数和析构函数。
- struct默认不能在实例方法中修改成员,必须用mutating指示可以修改,而class默认就可以修改。
- 常量struct意味着不能修改任何成员,而常量class只是表明引用不可改,引用指向的内存内容可以改。
- struct在有些时候意味着更轻量级,更适合于不涉及复杂成员和成员操作时使用。