using namespaceには要注意

C++では指定された名前空間を使う処理として、using namespaceというものがあるが、これは使い所に注意が必要なものである。特にC++のプログラミング本では説明なしに使っている場合が多いので、特に気をつける必要がある。

using namespaceは、主にそのままでは冗長なコードを短くするのに往々にして使われる。例えば以下のようなコードがある。

この場合は、std::stringstd::coutstd::endlが該当する。これらはstdネームスペースに含まれる命令、関数、型だが、これが多く含まれる場合、冗長になってしまう。これを簡潔にしたい場合は、以下のような記述になるだろう。

ここでは、using namespace stdで、stdに属する関数や型が使われるということを明示できる。この場合はファイル単位で使われる。

ただ、気をつけなければならないのは、インクルードに使われるヘッダーファイルには絶対にusing namespaceを使ってはいけないという点である。万が一それをしてしまうと、そのファイルにインクルードしている全てのファイルがその名前空間を使うということになってしまい、混乱が生じてしまうという他に、万一関数名や型の名前が一緒だった場合にビルドエラーが発生、あるいは予期せぬバグに見舞われるからである。

こういった問題点があるため、基本的には実装ファイルにとどめるべきである、できれば、以下のように関数単位で行うと良いだろう。

こうすれば、main()関数内だけにとどめることができる。

ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しております。仕事依頼や相談などについては、Contact Formよりお願いいたします。
スポンサーリンク

フォローする

トラックバックURL