厳密に型指定された "列挙型クラス"を "列挙型"に使用することの利点を理解していますが、クラスメイトと私はどちらか一方がより多くのメモリを使用するかどうか疑問に思っています。C++では、 "enum class"と "enum"の間でメモリ使用量に違いがありますか?
答えて
enum class
は、まだ付加的なオーバーヘッドのない整数値です。しかし、enum class
の基底型はデフォルトでint
になりますが、通常はenum
型が指定されておらず、実装は最小限の整数型を自由に選択できます。理論的には、基底型を指定しない場合は、enum class
は平文より大きい場合がありますenum
。
C++仕様7.2.5 - 列挙減速
enum class
基底型を明示的に列挙ベースを使用して指定することができます。明示的に指定されていない場合、スコープ付き列挙型の基になる型は
int
です。
enum
ないイニシャライザを最初に列挙子に指定されていない場合、初期値は不定積分 タイプを有しています。
優秀で、文書化されており、理解しやすい回答をいただきありがとうございます! – jamesc1101
また、メモリの制約が懸念される場合は、使用するデータ型を指定できることを学ぶのにも優れた教訓です。例:enum class Color:char {Red、White、Blue}; – jamesc1101
- 1. enum構造体とenumクラスの違いは何ですか?
- 2. enumクラスとenumクラスの違いは?
- 3. C#enum(コンパイル時のenumのサイズ)でsentinal値を使用していますか?
- 4. VBAでENUMを使用する理由はありますか?
- 5. C#のコードと少し違いのあるenumとのマージ
- 6. なぜC#のenumインスタンスからenum値にアクセスできないのですか?
- 7. Cでenumのユニオンを使用する
- 8. enum、class、またはtagsを使用するタイミングは?
- 9. C++の関数でenumを使用
- 10. class、enum、interfaceが期待されるのはなぜですか?
- 11. Objective-Cでenumを使用していますか?
- 12. EnumはどのようにCにメモリを割り当てますか?
- 13. enumとswitch文を使用するC#
- 14. どのようにJava EnumはC++と異なり、従来のEnumと異なりますか?
- 15. Cでのenumの使い方
- 16. Enum SingletonとClassの下位互換性
- 17. C#Enumは3進でキャストする必要がありますか?
- 18. プロトコルバッファ使用enum
- 19. RealmSwiftでenumを使用することはできますか?
- 20. VBでenumsエラー、C#でenumとどのように違うのですか?
- 21. EnumがViewModelにあるときにEnum値をCommandParameterとして渡します。
- 22. Python/SQLAlchemyでenum値として "class"を使用するにはどうすればよいですか?
- 23. トップが間違ったメモリ使用量を示している可能性があります
- 24. Web jsonの結果でenumを使用する必要があります
- 25. Dapper.FastCRUDを使用してC#enumをPostgreSQL enumにマップする方法
- 26. enum型を汎用クラスで使用するときに、enumを文字列としてシリアル化する方法はありますか?
- 27. には、&funcまたはclass :: funcのC++での使用がありますか?
- 28. WebMethodでEnumを使用せずにWebServiceのクライアントJavaScriptにEnumを公開していますか?
- 29. メソッドの "Enum"と "enum"パラメータ
- 30. Datastax C#Driverを使用してC#enumをCassandraフィールドにマップする方法はありますか?
(大きな基底型を指定しない限り)enumクラスがより多くのメモリを使用する理由はありません。簡単なプログラムと実験を作ってみませんか? –
私は、コンパイル時にはほとんどの違いが処理され、実行時ではなく(メモリの変更なし)処理されると思います。これは、テストするのはかなり簡単なはずです - ちょうど2つの(ほぼ)同一のプログラムを作成し、コンパイルし、比較してください。 – Conduit