[解決済み] C++: 名前空間 -- ヘッダファイルやソースファイルでの正しい使い方は?
2022-12-15 01:45:27
質問
2つのソースファイルの組を考えてみましょう。インターフェース宣言ファイル(
*.h
または
*.hpp
) とその実装ファイル (
*.cpp
).
を、その
*.h
ファイルは次のようにします。
namespace MyNamespace {
class MyClass {
public:
int foo();
};
}
ソースファイルで名前空間を使用するための2つの異なるプラクティスを見たことがあります。
*.cpp
は、プラクティス1を示しています。
#include "MyClass.h"
using namespace MyNamespace;
int MyClass::foo() { ... }
*.cpp
練習その2を示す。
#include "MyClass.h"
namespace MyNamespace {
int MyClass::foo() { ... }
}
私の質問です。 この2つのやり方に違いはあるのでしょうか?
どのように解決するのですか?
コードの可読性の観点からは、この理由で#2の方法を使用する方が良いと私は考えています。
あなたは
using
という複数の名前空間を同時に記述することができ、その行以下に書かれたオブジェクトや関数は(名前の衝突を除けば)どの名前空間にも属すことができます。 ファイル全体を
namespace
ブロックで包むと、より明示的になり、.cpp ファイル内でその名前空間に属する新しい関数や変数を宣言することもできます。
関連
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] C++のヘッダーファイルで#ifndefと#defineが使われているのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み] 配列のベクトルを扱う正しい方法