アフィリエイト広告を利用しています

広告

posted by fanblog

2017年10月13日

《その77》 名前空間(p.343演習9-7,演習9-8,演習9-9)


関数やオブジェクトに内部結合を与えるには、

T) 識別子に static を付ける。

static int a1;

U) 名前無し空間に所属するものとして定義する。

namespace {
int a1;
}

といった方法がありますが、C++ では、Uの方法が推奨されています。




新版明解C++入門編 p.343 演習9-7
 名前空間 Japanese の中に大阪弁を表す名前空間 Osaka を List 9-15(p.339)に追加したプログラムを作成せよ。追加した名前空間の中に、『変数 x の値は 1 でっせ。』と表示する関数 print_x と、『もうかってまっか?』と表示する関数 hello を定義すること(変数 x は定義しない)。

// p343_演習9-7
#include <iostream>
using namespace std;

namespace English {
int x = 1;
void print_x() {
cout << "The value of x is " << x << ".\n";
}
void hello() {
cout << "Hello!\n";
}
}

namespace Japanese {
int x = 2;
void print_x() {
cout << "変数xの値は" << x << "です。\n";
}
void hello() {
cout << "こんにちは!\n";
}
namespace Osaka {
int x = 3;
void print_x() {
cout << "変数xの値は" << x << "でっせ。\n";
}
void hello() {
cout << "もうかってまっか!\n";
}
}

}

int main()
{
cout << "English::x = " << English::x << '\n';
English::print_x();
English::hello();

cout << "Japanese::x = " << Japanese::x << '\n';
Japanese::print_x();
Japanese::hello();

cout << "Japanese::Osaka::x = " << Japanese::Osaka::x << '\n';
Japanese::Osaka::print_x();
Japanese::Osaka::hello();

}

c09_07.png



新版明解C++入門編 p.343 演習9-8
 前問を、名前空間メンバの宣言と定義を分離したプログラムとして作成せよ。

// p343_演習9-8
#include <iostream>
using namespace std;

namespace English {
extern int x;
void print_x();
void hello();
}

namespace Japanese {
extern int x;
void print_x();
void hello();
namespace Osaka {
extern int x;
void print_x();
void hello();
}
}


int English::x = 1;
void English::print_x() {
cout << "The value of x is " << x << ".\n";
}
void English::hello() {
cout << "Hello!\n";
}

int Japanese::x = 2;
void Japanese::print_x() {
cout << "変数xの値は" << x << "です。\n";
}
void Japanese::hello() {
cout << "こんにちは!\n";
}

int Japanese::Osaka::x = 3;
void Japanese::Osaka::print_x() {
cout << "変数xの値は" << x << "でっせ。\n";
}
void Japanese::Osaka::hello() {
cout << "もうかってまっか!\n";
}


int main() {
cout << "English::x = " << English::x << '\n';
English::print_x();
English::hello();

cout << "Japanese::x = " << Japanese::x << '\n';
Japanese::print_x();
Japanese::hello();

cout << "Japanese::Osaka::x = " << Japanese::Osaka::x << '\n';
Japanese::Osaka::print_x();
Japanese::Osaka::hello();
}



新版明解C++入門編 p.343 演習9-9
 演習9-6(p.337)(本ブログ《その76》)中の内部結合をもつ識別子を、名前無し名前空間に属するように変更したプログラムを作成せよ。

 ソースプログラム io.cpp の中の

static void prompt()
{
cout << "0〜" << max_no << "の数:";
}

の定義を、次のように、関数 prompt が名前無し空間に所属するものとして定義する形に変更する。

namespace {
void prompt()
{
cout << "0〜" << max_no << "の数:";
}
}


新版 明解C 入門編 (明解シリーズ)

新品価格
¥2,916から
(2017/8/30 21:02時点)









--
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/6806500
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


検索
<< 2018年08月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
プロフィール
こうすけさんの画像
こうすけ

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


×

この広告は30日以上新しい記事の更新がないブログに表示されております。