2011-04-29 31 views
0

C++プログラムのコンソールI/Oを処理するためのクラスUIがあります。 cin入力を得るために変数 'string input'を使用するメンバー関数が4〜5あり、これらの関数のいくつかは再帰的になります。 私はこれらの各関数の先頭に '文字列入力'を宣言するか、privateメンバー変数を持ち、各関数の先頭にinput.clear()を置くほうが良いかどうかを考えてみました。スタイルp-o-vと効率p-o-vから、最良の選択は何ですか?メンバ変数を使用するか、関数内で変数を宣言する必要がありますか?

答えて

3

入力文字列が長期的にオブジェクトに永続的に関連付けられておらず、短期間にローカルで使用されている場合は、それをローカル変数にします。

1)意味的にはとにかく意味します。

2)自分自身を再帰的に呼び出す場合は、再帰呼び出しごとに別々の変数を設定する必要があります。

3)効率の観点からは、a)違いはおそらくそれほど気付きにくいかもしれません。b)オブジェクトのメンバ変数を指し続けるよりも、スタック上に新しい変数を作成するほうが速いでしょう高いです。

0

dfanと同意します。別のポイントは、メンバ変数として定義する場合、メンバ関数の実装をこの文字列のソースの知識と切り離す必要があることでしょう。たとえば、std :: cinの代わりにファイルI/Oから読み込むなど、文字列のソースを変更すると、メソッドは変更されません。

関連する問題