📘

SwiftにおけるClassとStructの違い

2024/02/05に公開

ClassとStructで違う点 (Swift)

個人的なメモ書き程度で書いています。間違っている箇所があればご指摘ください。

主に以下の4点で異なる。
・参照型 or 値型
・継承できるか
・初期化
・メモリ管理

参照型 or 値型

Classは参照型であり、同じインスタンスを参照している変数が複数ある場合、どれか一つでも変更すると同じインスタンスを参照しているその他の変数も変更される。
Structは値型であり、変数間でのデータのコピーが可能。コピーした変数に変更を施しても、コピー元の変数に影響はない。

継承できるかどうか

Classは継承が可能であり、その他のクラスのメソッドやプロパティなどを継承することが可能。Structは不可。

初期化

Classはプロパティの初期化に用いる関数の init が自動的に提供されないため、自分で書く必要がある。Structは自動的に提供されるため、書かなくてもよい。

メモリ管理

Classはヒープ上に割り当てられる。Structはスタック上に割り当てられ、メモリ管理の負担が軽減される。

Discussion