類(Class)和結構體(Struct)區別
1. 內存管理方式不一樣, 類引用類型, 分配在堆上。 結構體值類型,分配在棧上。
2. 類, 有析構。 結構體不能有析構, playground中測試直接卡死。
3. 結構體構造函數, 會自動生成帶參數的構造器。類不會對有初始化賦值的屬性, 生成帶參數的構造器。
2. 類有繼承特性,結構體沒有繼承特性,自然也不存在對成員屬性和成員方法, 類屬性和類方法的重載。
正因為結構體沒有繼承, 所以操作符函數, 需要static修飾, 而不能用class修飾;
struct : static func +(left:A,right:A) -> A {...}
class: static func +(left:A,right:A) -> A {...} 或者
final class func +(left:A,right:A) -> A {...}
相同點
1, 其他高級特性都差不多,結構體和類都有的特性:
操作符函數, 范型, 協議采納, 觀察器