「using namespace std;」の問題は何ですか? 質問する

「using namespace std;」の問題は何ですか? 質問する

using namespace std;は間違っており、代わりにstd::coutand を直接使用する必要があると聞きましたstd::cin

これはなぜでしょうか? 名前空間内の何かと同じ名前を共有する変数を宣言するリスクはありますかstd? パフォーマンスに影響はありますか?

ベストアンサー1

Foo と Bar という 2 つのライブラリを考えてみましょう。

using namespace foo;
using namespace bar;

Blah()すべて正常に動作し、 Foo およびBar から問題なく呼び出すことができますQuux()。しかし、ある日、 という関数を提供するようになった Foo 2.0 の新しいバージョンにアップグレードすると、Quux()競合が発生します。Foo 2.0 と Bar の両方がグローバル名前空間にインポートされますQuux()。特に関数のパラメータが一致する場合、これを修正するにはある程度の労力が必要になります。

foo::Blah()を使用していた場合bar::Quux()、 の導入はfoo::Quux()問題にならなかったでしょう。

おすすめ記事