- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++のnamespace stdについて)
C++のnamespace stdについて
このQ&Aのポイント
- C++のnamespace stdについて教えてください。
- C++でcoutやprintfを使用する場合、それぞれのインクルードファイルには同じ名前の名前空間であるstdが定義されています。しかし、両方をインクルードすると名前空間が競合してしまう可能性があります。
- namespaceはC++でのパッケージのような役割を果たしますが、なぜ同じ名前空間を定義しているのかは疑問です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>もしもそうだとしたらcstdio,iostreamの両方をインクルードしている場合 >名前空間が競合してしまうのではないでしょうか? 名前空間が競合してるのではなく、どちらも名前空間stdというだけなんですけど。 例えばjava.ioのにはインターフェイスやクラスが多数ありますけど、java.ioが競合しているとはいわないと思いますが。
その他の回答 (2)
- wormhole
- ベストアンサー率28% (1626/5665)
回答No.3
>なるほど、ヘッダファイルの中にネストしてnamespaceが有るのではなく、 >namespaceの中にネストしてヘッダが有るということですね。 ヘッダファイルはネームスペースとは無関係ですよ。 単にヘッダファイルで分けて書いてあるだけ。
質問者
お礼
良く解りました。大変ありがとうございました!
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
「規格で定義されているもの」は std 名前空間 (あるいはその中にネストした名前空間) にあります. そもそも, 単純に「名前空間が競合する」だけであれば特に困らないはずですが....
質問者
お礼
大変有難うございました。 stdの中にiostream、cstdが含まれているということですね! ファイルの方が上位の概念と勘違いしておりました。 ありがとうございました。
お礼
なるほど、ヘッダファイルの中にネストしてnamespaceが有るのではなく、 namespaceの中にネストしてヘッダが有るということですね。 cstdio-----std-----printf |---hege iostream-----std-----cout |---hegehoge ではなく std-----cstdio-----printf | |---hoge | ---iostream-----cout |---hogehoge ということですね! ファイルの方が上位の概念かと思っておりました。 有難うございました。