1. ホーム
  2. c++

[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?

2022-03-13 10:01:16

質問

を書くと、他の人に言われたことがあります。 using namespace std; を使うべきであると言っています。 std::coutstd::cin を直接指定します。

なぜ using namespace std; 悪い習慣と考えられているのでしょうか?非効率的なのか、それともあいまいな変数(関数と同じ名前を持つ変数が std 名前空間)を使用することができますか?パフォーマンスに影響はありますか?

どのように解決するのですか?

これは、パフォーマンスとは全く関係ありません。しかし、こう考えてみてください。FooとBarという2つのライブラリを使っているとします。

using namespace foo;
using namespace bar;

すべて正常に動作し Blah() からFooと Quux() は問題なくBarから取得できます。しかしある日、Foo 2.0 の新しいバージョンにアップグレードすると、そのバージョンでは Quux() . このとき、あなたは衝突を経験した。Foo 2.0 と Bar の両方が Quux() をグローバル名前空間に追加します。これは、特に関数のパラメータが一致する場合、修正するのに多少の労力を必要とします。

もしあなたが foo::Blah()bar::Quux() を導入したのであれば foo::Quux() ということになる。