2016-07-04 6 views
0

最近、クラスがどのようにタイプに対して独自のローカル名を定義することが許されているかを読んでいます。有名な例の1つはsize_typeであり、ほぼすべてのSTLコンテナによって提供されています。そうすることで、クラスのユーザーから実装の詳細を隠すのに役立つとも言われました。これがどのように起こっているか私はあまりよく分かりません。C++ - タイプのローカル名の意義

タイプのローカル名を定義すると便利な場合があり、そうすることで実装の詳細が隠蔽される例は何ですか?

+1

「size_type」という名前でどのような実装の詳細が公開されていますか? – molbdnilo

+1

@molbdniloとは何が隠されていますか? – juanchopanza

答えて

1

タイプのローカル名を定義すると便利であり、実装の詳細がどのように隠れるかをいくつかの例で示してください。

テンプレートアルゴリズムやコンテナを使用すると、そのタイプにそのようなエイリアスがあると思われる場合に、より便利です。したがって、タイプをsize_typeに変更した場合でも、何らかの理由でsize_tからintに変更しても、そのアルゴリズム/コンテナは引き続き使用できます。

それ以外の場合は、例えば、独自のアロケータを実装する場合には、標準ではの存在が必要です。

1

タイプsize_typeの変数をいくつか定義し、どこかにintとして定義されているプログラムがあるとします。

次に、分析と反映の後で、変数が値が1万を超えるとは決して想像しません。したがって、これらの変数のそれぞれを割り当てるために使用される32ビットは、幾分過度のものです。この場合、size_typeshortタイプとして再定義することができます(intではなく)。したがって、いくつかのメモリを節約することになります。

例に関しては、clock_t,char16_t, char32_t, wchar_t,true_typeおよびfalse_typeをチェックすることができます。

関連する問題