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. テーブル変数@tableを宣言する必要があります
- 3. エラー:スカラー変数を宣言する必要があります
- 4. スカラー変数を宣言する必要があります。
- 5. スカラー変数 "@UserName"を宣言する必要があります
- 6. テーブル変数を宣言する必要があります
- 7. テーブル値関数、テーブル変数と「スカラー変数を宣言する必要があります」というエラーメッセージ
- 8. 多くの関数で使用される変数をメンバ変数として宣言すべきですか?
- 9. どこで静的変数を宣言する必要がありますか?
- 10. 変数のみを読み込むにはグローバル変数を宣言する必要がありますか?
- 11. グローバル変数を使用する必要がありますか?
- 12. イベントディスパッチスレッドで 'ローカル変数を最終宣言する必要があります'
- 13. Cで関数を宣言する必要はありますか?
- 14. エラーSqlParameterで予約語を使用すると、 "スカラー変数を宣言する必要があります"
- 15. 関数宣言にパラメータ名を含める必要がありますか?
- 16. デストラクタのメンバ変数を無効にする必要がありますか?
- 17. メンバ変数の汎用宣言
- 18. なぜfprintfを使用する場合、インライン関数を静的宣言する必要がありますか?
- 19. $ _GET、$ _POST、$ _SESSION宣言内で複数の変数を使用する方法はありますか?
- 20. 関数ごとに関数プロトタイプを宣言する必要がありますか?
- 21. いつヒープ上のメンバ変数を宣言するのかC++
- 22. シングルトン内のメンバー変数は静的として宣言する必要がありますか?
- 23. PostgreSQLで関数内に変数を宣言できません
- 24. プライベート変数を参照するとき、this.variableName宣言が必要ですか?
- 25. エラー:複数のデータベースに挿入ステートメントの "スカラー変数を宣言する必要があります"
- 26. 親クラスから継承した変数を宣言する必要がありますか? (PHP 5.3.2)
- 27. jQuery - 変数をURLエンコードする必要がありますか?
- 28. pl/sql関数内で変数を宣言できないようですか?
- 29. 一時変数に__unsafe_unretainedを使用する必要がありますか?
- 30. 変数を複数回宣言する