• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++のnamespace stdについて)

C++のnamespace stdについて

このQ&Aのポイント
  • C++のnamespace stdについて教えてください。
  • C++でcoutやprintfを使用する場合、それぞれのインクルードファイルには同じ名前の名前空間であるstdが定義されています。しかし、両方をインクルードすると名前空間が競合してしまう可能性があります。
  • namespaceはC++でのパッケージのような役割を果たしますが、なぜ同じ名前空間を定義しているのかは疑問です。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>もしもそうだとしたらcstdio,iostreamの両方をインクルードしている場合 >名前空間が競合してしまうのではないでしょうか? 名前空間が競合してるのではなく、どちらも名前空間stdというだけなんですけど。 例えばjava.ioのにはインターフェイスやクラスが多数ありますけど、java.ioが競合しているとはいわないと思いますが。

haraheri31
質問者

お礼

なるほど、ヘッダファイルの中にネストしてnamespaceが有るのではなく、 namespaceの中にネストしてヘッダが有るということですね。 cstdio-----std-----printf           |---hege iostream-----std-----cout            |---hegehoge ではなく std-----cstdio-----printf    |      |---hoge    |     ---iostream-----cout             |---hogehoge ということですね! ファイルの方が上位の概念かと思っておりました。 有難うございました。

その他の回答 (2)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.3

>なるほど、ヘッダファイルの中にネストしてnamespaceが有るのではなく、 >namespaceの中にネストしてヘッダが有るということですね。 ヘッダファイルはネームスペースとは無関係ですよ。 単にヘッダファイルで分けて書いてあるだけ。

haraheri31
質問者

お礼

良く解りました。大変ありがとうございました!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「規格で定義されているもの」は std 名前空間 (あるいはその中にネストした名前空間) にあります. そもそも, 単純に「名前空間が競合する」だけであれば特に困らないはずですが....

haraheri31
質問者

お礼

大変有難うございました。 stdの中にiostream、cstdが含まれているということですね! ファイルの方が上位の概念と勘違いしておりました。 ありがとうございました。

関連するQ&A