2

重複の可能性:
名前空間 std を使用する順序。含まれていますか?

すべてのソースファイルを次で開始するチュートリアルを読んだことを覚えています

using namespace std;

GCC コンパイラでテストしたところ、コードは受け入れられました。しかし、そのようなコードは有効ですか?

4

4 に答える 4

2

std前に名前空間を定義していれば、有効です。

namespace std {}
using namespace std;

using namespace std;ただし、含まれているすべてのヘッダーにa を課すため、おそらくあまり良い考えではありません。

于 2012-03-07T09:53:13.080 に答える
1

私の意見では、namespace std;を使用することの唯一の違いは次のとおりです。それを使用しないと、後でコード変数で競合が発生する可能性があります (名前の衝突)。さらに、それを使用すると名前空間 stdにすべてが含まれるため、他の誰かの名前空間を汚染する可能性があるため、ヘッダー ファイルでは使用しないことをお勧めします。しかし、それを cpp ファイルで使用するかどうかはあなた次第です。

std::cinまたはcin、唯一の違いは怠惰です。しかし、名前空間 std;を使用して使用します。 有効です

編集:(参照とより明確にするために)

この件に関するこれら2つの参照が見つかりました.2番目の参照は、それが有効で正常に機能する理由についてより役立つと思いますが、場合によっては悪い習慣と見なされます. cplusplusstackoverflowを確認してください

引用:

ディレクティブの使用は避けることをお勧めします。宣言を使用する方がはるかに理にかなっていますが、個人的には、完全修飾名を使用したいだけです。

たとえば、次を使用できます。

using std::cout;
using std::cin;
using std::endl;

std全体を使用する代わりに。

于 2012-03-07T10:03:43.057 に答える
1

はい、完全に有効です。

実は、タイトルを読み直してから。. . 含まれているヘッダーの前にそれを含めると、それほど多くはありません。それは「有効」ですが、良い習慣ではありません。

C++を参照してください: #include<headerxy> の前に「using namespace xyz」を使用するとどうなりますか

于 2012-03-07T09:48:54.577 に答える
0

ほとんどのコンパイラは標準に準拠しており、特にこのような基本的な仕様は完全に標準に準拠しています。しかし、プログラマーである私は、必要な場合を除き、宣言を使用したことはありません。私が見たケースのほとんどは、学校のようなプログラムに関するものです。実際の運用では、使用法を理解する必要があり、これらの種類の宣言は、使用を開始する場所の近くで行われます。しかし、それは機能しますが、これまで使用されたことはありません!

于 2012-03-07T09:54:42.733 に答える