名前空間とは何のことでしょうか?

using namespace std;は何のために記述されているの? 名前空間とは何のことでしょうか?

ソーラー「みなさ~ん


次のプログラムに御注目下さい」


マックス「今日はなんだぁ(´▽`*)」



#include <iostream>


using namespace std;//👈ここに注目


int main(){


cout << "にゃ~ん\n";


return 0;

}


ビルド実行結果


にゃ~ん




ソーラー「いままで


プログラム内で


using namespace std;//👈ここに注目


を記述していたのにきづいていたかな~?」


マックス「気づいとるわい!」


ソーラー「ぼく 気づいてなかったんです」


マックス「気づいてなかったんかい!」


ソーラー「そこで


今日は なぜ


using namespace std;


が記述されているかを考察してみよう!」


マックス「おっそ」


ソーラー「


namespaceとはそのまんま


名前空間と呼ばれます


なぜ


名前空間というものが登場してきたのかな?


そうおもわれますね


実は

先程のプログラム

👇

#include <iostream>


using namespace std;//👈ここに注目


int main(){


cout << "にゃ~ん\n";


return 0;

}


ビルド実行結果


にゃ~ん



以下のように


using namespace std;//👈ここに注目


を取り除いて


以下のように記述することができます

👇


#include <iostream>


int main(){


std::cout << "にゃ~ん\n";


return 0;

}


ビルド実行結果


にゃ~ん


マックス「な、なんだ???


プログラムが実行できてるぞ


しかも なんか


coutにstd::がくっついている?


どういうことぉ?」



ソーラー「さらに次のプログラムをごらんください」


👇


#include <iostream>


int main(){


cout << "にゃ~ん\n";


return 0;

}


ビルド実行結果


エラー C2065 'cout': 定義されていない識別子です。

エラー (アクティブ) E0020 識別子 "cout" が定義されていません




マックス「coutからstd::を取り除くと


ビルドエラーが表示された


意味がよくわっからん」



ソーラー「実は


cout(っていう名前)は


stdという名前空間内に存在しているんです


cout(っていう名前)の住所がstdというわけです


そして


先程のプログラム

👇

#include <iostream>


int main(){


std::cout << "にゃ~ん\n";


return 0;

}


ビルド実行結果


にゃ~ん

👆

のように


本来は

coutではなく


住所stdに


::(スコープ解決演算子)を用いてcoutにくっつけた


std::cout


を記述しなければ


プログラムを実行することはできません



マックス「なんだ?


coutには住所があるのか?


ソーラーだけではどのソーラーかわからず


理想郷のソーラーならわかるというわけか?」


ソーラー「そうなんだ


面白いでしょ」


マックス「C言語には そんな仕組みなかったよな?」


ソーラー「そうなんです


名前空間とは


C++言語になって登場してきたんですよ」



だから


👇のプログラムは実行できなかったというわけです


#include <iostream>


int main(){


cout << "にゃ~ん\n";//👈住所std::がついていないのでビルドエラーになります


return 0;

}


ビルド実行結果


エラー C2065 'cout': 定義されていない識別子です。

エラー (アクティブ) E0020 識別子 "cout" が定義されていません




ソーラー「でも


std::cout


と記述する箇所が以下のプログラムのように何か所もあると

👇


#include <iostream>


int main(){


std::cout << "にゃ~ん\n";

std::cout << "にゃ~ん\n";

std::cout << "にゃ~ん\n";

std::cout << "にゃ~ん\n";

std::cout << "にゃ~ん\n";

std::cout << "にゃ~ん\n";

std::cout << "にゃ~ん\n";

std::cout << "にゃ~ん\n";

std::cout << "にゃ~ん\n";

std::cout << "にゃ~ん\n";


return 0;

}


ビルド実行結果


にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん


👆

ソーラー「ちょっと


手間ですね


そこで


using namespace std;


の登場です


using namespace std;


が記述してあると


cout


が記述されているだけで


コンパイラは


std::cout


が記述されているとみなします


ですから


今のプログラムを


using namespace std;


を用いて


次のように書き換えることができます


#include <iostream>


using namespace std;


int main(){


cout << "にゃ~ん\n";

cout << "にゃ~ん\n";

cout << "にゃ~ん\n";

cout << "にゃ~ん\n";

cout << "にゃ~ん\n";

cout << "にゃ~ん\n";

cout << "にゃ~ん\n";

cout << "にゃ~ん\n";

cout << "にゃ~ん\n";

cout << "にゃ~ん\n";


return 0;

}


ビルド実行結果


にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん

にゃ~ん


ソーラー「そして


cout


だけでなく


cinの住所も


stdなんです



ですから


using namespace std;


を用いない場合は


以下のようにcinにstd::をくっつけずcinだけを記述したプログラムを実行することはできません

👇


#include <iostream>


int main() {


int a;


cin >> a;

return 0;

}



ビルド実行結果


エラー (アクティブ) E0020 識別子 "cin" が定義されていません

エラー C2065 'cin': 定義されていない識別子です。



ソーラー「cinにstd::をくっつけると


実行できるようになります


👇


#include <iostream>


int main() {


int a;


std::cin >> a;

std::cout<< a<< "\n";

return 0;

}



ビルド実行結果


1(と入力すると)

1(が表示されます)



マックス「なるほど。


だがしかし・・・


なんで


cin

cout


にstdという住所があるんだ?」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る