C++のclassとstructの違い
はっきりとした言及があまりなかったので一応メモ。
Cにおいてclassとstructは(Cには記憶クラスというものがあって)全くの別物だが、C++ではstructとclassに機能的な違いはない。
structとclassの違い
振る舞いとしての唯一の違いはデフォルトのアクセス指定子の違いである。
- struct
- デフォルトで
public
- デフォルトで
- class
- デフォルトで
private
- デフォルトで
struct hoge{ int h; }; class hage { int h; }; int main() { hoge hoge_instance; hage hage_instance; hoge_instance.h = 1; //OK //hage_instance.h = 1; //NG return 0; }
次のように書けば等価
struct hoge{ public://かかなくても良いが int h; }; class hage { public: int h; }; int main() { hoge hoge_instance; hage hage_instance; hoge_instance.h = 1; //OK hage_instance.h = 1; //OK return 0; }
structとclassの使い分け
以下に使い分けに関して言及がある。
oop - What are the differences between struct and class in C++? - Stack Overflow
要点をまとめると