0

注: 私自身はほぼ初心者です。この質問は、私が経験した唯一の言語であるため、C++ の使用法に集中しています。

using namespace std;C++ 用に提供されたコード例で使用する Stack Overflow については、コンセンサスがあるようです。私はもともとこの方法でそれを学びましたが、後でなぜこれが問題になるのか教えられませんでした.

サンプルコードで接頭辞 std:: を使用することに問題があるのはなぜだろうと思っていました。特に質問者の多くがコードを例から IDE にコピーして貼り付けているため、グローバル名前空間を宣言するのは気まぐれに思えます。名前空間は高度なプログラミングの概念ですが、 std:: の前に付けて、初心者が質問した場合に後で説明するのが最善だと思います。

初心者にこの使い方を教えてもよいのはなぜですか?

4

6 に答える 6

7

答えは「特に問題ありません」だと思います。これは、後で拾って修正するのがかなり簡単な微妙な点です。

私が知っているすべての初心者向けプログラミング テキストは、多くの単純化を行い、多くのことを隠すために多くの手を振っています (「この行は魔法です。入力するだけです。それが何をするかについては後で説明します」)。 .

初心者は、コードのすべてを完全に理解する必要がなく、どのように/なぜそれが悪いのかを心配するのに十分であるため、多くの場合、これらの単純化は良いことです.

この場合、私はあなたに同意します。

プレフィックスを追加するstd::ことは大したことではなく、名前空間をかなりわかりやすくすることができます。using namespace std実際には、適切に説明して理解するのははるかに困難です。

一方で、スペースを占有し、コードにノイズを追加します。コードはできるだけ簡潔で明確にする必要があります。

于 2009-07-26T19:36:19.160 に答える
3

IMO の初心者にとっては、関数、クラス、条件などの概念を理解することがはるかに重要です。明示的な名前空間宣言は邪魔になります。

これらの基本的な概念を理解すれば、名前空間の利点を説明することはそれほど難しくありません。

于 2009-07-26T19:19:37.243 に答える
2

私はそれを単純化すると思います。初心者の場合、変数、制御構造、メソッド/関数、C/C++ ではポインターや参照などについて学ぶ必要があります。すべてのプログラミング言語に適用される基本を習得するまでは、名前空間やパッケージングなどについて心配する必要はありません。

于 2009-07-26T19:19:34.093 に答える
0

可能な限り迅速な方法で(または少なくとも最小限のタイピングで)質問に答えることが、何らかの方法で教訓的であるというあなたの質問の前提には同意しません。「エラーチェックが含まれていない」や「おそらくグローバル名前空間を使用したくない」などの質問に対して、常に免責事項を付けることはできません。要するに、質問への回答は、必ずしもソリューションをコード化するための最良の方法の例であるとは限りません。

于 2009-07-26T19:21:23.200 に答える
0

初心者の段階では差し迫った問題ではありませんが、

namespace A
{
int a;
}

namespace B
{
int a;
}

A::a と B::a は 2 つの異なるものです

于 2009-07-27T07:27:19.253 に答える