C++プログラムのコンソールI/Oを処理するためのクラスUIがあります。 cin入力を得るために変数 'string input'を使用するメンバー関数が4〜5あり、これらの関数のいくつかは再帰的になります。 私はこれらの各関数の先頭に '文字列入力'を宣言するか、privateメンバー変数を持ち、各関数の先頭にinput.clear()を置くほうが良いかどうかを考えてみました。スタイルp-o-vと効率p-o-vから、最良の選択は何ですか?メンバ変数を使用するか、関数内で変数を宣言する必要がありますか?
0
A
答えて
3
入力文字列が長期的にオブジェクトに永続的に関連付けられておらず、短期間にローカルで使用されている場合は、それをローカル変数にします。
1)意味的にはとにかく意味します。
2)自分自身を再帰的に呼び出す場合は、再帰呼び出しごとに別々の変数を設定する必要があります。
3)効率の観点からは、a)違いはおそらくそれほど気付きにくいかもしれません。b)オブジェクトのメンバ変数を指し続けるよりも、スタック上に新しい変数を作成するほうが速いでしょう高いです。
0
dfanと同意します。別のポイントは、メンバ変数として定義する場合、メンバ関数の実装をこの文字列のソースの知識と切り離す必要があることでしょう。たとえば、std :: cinの代わりにファイルI/Oから読み込むなど、文字列のソースを変更すると、メソッドは変更されません。
関連する問題
- 1. スカラー変数を宣言する必要がありますか?
- 2. スカラー変数を宣言する必要があります。
- 3. スカラー変数 "@UserName"を宣言する必要があります
- 4. Dapper ...スカラー変数を宣言する必要があります
- 5. テーブル変数 "@myTable"を宣言する必要があります
- 6. スカラー変数を宣言する必要があります@ DateField2
- 7. エラー:スカラー変数を宣言する必要があります
- 8. テーブル変数@tableを宣言する必要があります
- 9. テーブル変数を宣言する必要があります
- 10. テーブル変数とエラー "スカラー変数を宣言する必要があります"
- 11. サブ関数のグローバル変数を宣言する必要はありません
- 12. どこで静的変数を宣言する必要がありますか?
- 13. PHPコンストラクタで変数を初期化する前に変数を宣言する必要がありますか?
- 14. 多くの関数で使用される変数をメンバ変数として宣言すべきですか?
- 15. テーブル値関数、テーブル変数と「スカラー変数を宣言する必要があります」というエラーメッセージ
- 16. 変数のみを読み込むにはグローバル変数を宣言する必要がありますか?
- 17. グローバル変数を使用する必要がありますか?
- 18. イベントディスパッチスレッドで 'ローカル変数を最終宣言する必要があります'
- 19. C#で静的変数を宣言する必要がありますWinfoms
- 20. カスタム関数内で複数の変数を宣言する
- 21. ローカル変数からローカル変数にアクセスし、最終的に宣言する必要があります
- 22. スカラー変数を宣言する必要があります - SQL Server
- 23. SQLサーバーエラー:スカラー変数 "@lastrow"を宣言する必要があります
- 24. SQL Serverエラー: "スカラー変数を宣言する必要があります"
- 25. は、スカラー変数@ TextBox1を宣言する必要があります。asp.net
- 26. テーブル変数(動的クエリ)を宣言する必要があります
- 27. Cで関数を宣言する必要はありますか?
- 28. DLLの関数内で静的変数を使用する必要がありますか?
- 29. 変数をJavascriptの関数で引数として使用する前に宣言する必要がありますか?
- 30. 関数宣言にパラメータ名を含める必要がありますか?