🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
using namespace std;は何のために記述されているの? 名前空間とは何のことでしょうか?
名前空間とは何のことでしょうか?
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という住所があるんだ?」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます