Cpp NameSpace 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(namespace)
 
1行: 1行:
 +
[[C PlusPlus#C++からの技術|C++]]に戻る
 +
 +
 
<table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner">
 
<table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner">
 
<tr>
 
<tr>
 
<td style="width:1px;"></td>
 
<td style="width:1px;"></td>
<td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++ NameSpace</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td>
+
<td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++(Cpp) NameSpace</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
8行: 11行:
 
<br />
 
<br />
 
== '''namespace''' ==
 
== '''namespace''' ==
 +
 
namespaceは日本語では「名前空間」と表現されるもので、クラス名を明確にしたり、プログラムの記述部に名前をつけるものです。このような名前の付与はクラス名や関数名の衝突を避けるための手法として役立ちます。
 
namespaceは日本語では「名前空間」と表現されるもので、クラス名を明確にしたり、プログラムの記述部に名前をつけるものです。このような名前の付与はクラス名や関数名の衝突を避けるための手法として役立ちます。
  
54行: 58行:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
と書くことも出来ます。
 
と書くことも出来ます。
 +
 +
 +
長い名前空間を別の名前に置き換えたりするために以下のような定義によって置き換えることができます。
 +
<syntaxhighlight lang="cpp">
 +
namespace Test = TestCode::TestCode2;
 +
 +
int _tmain(int argc, _TCHAR* argv[])
 +
{
 +
  …
 +
  nReturn = Test::Function();
 +
  …
 +
  return 0;
 +
}
 +
 +
 +
</syntaxhighlight>
 +
 +
階層になっていない名前空間についても同様に別の名前を設定できますが、あまり意味のない名前の付け替えは混乱のもとになります。階層が長くなり過ぎる場合など有用な使い方に限定した方が良いでしょう。
 +
 +
 +
== '''標準namespace''' ==
 +
 C++標準の関数はstdという名前空間に定義されています。なので、標準関数を使うなら、とりあえずusing namespace std;として記述
 +
しておくのが良いとされています。良くないとも言っている人もいます。C++標準で使われている関数名と重複しない関数の命名をしていれば、使った方が良いと思います。一部の関数しか使わないとわかっているならusing namespace std::cin;といったように何回も使う標準関数だけをusingで名前空間を設定すると良いのかもしれません。そんなん余計面倒と思うなら標準関数の全ての命名規則を把握しておいて、こういう関数名の定義方法なら重複しないな。という手順をとった方が楽かもしれません。名前空間stdの中にある関数を利用するプログラムファイルについては、プロジェクトに含まれるファイルのそれぞれでusing namespace std; と記載する必要があります。
 +
 +
 +
 標準関数内では、実際は#define _STD_BEGIN namespase std { と _STD_END } とマクロ定義されているので、標準関数プログラムでは_STD_BEGINと_STD_ENDで囲まれて、名前空間を定義しています。ちゃんと名前空間std内にあります。確かめたい人は確かめてみて下さい。
 +
 +
 +
 どんな関数が標準関数として用意されているのかは、それぞれの標準関数ヘッダファイルを開いて、正規表現検索で
 +
 +
*C言語の<xx.h>標準ヘッダファイル
 +
:__CRTDECL (?!_)(.*)\(
 +
 +
*C++の<xxxx>標準ヘッダファイル
 +
:__PURE_APPDOMAIN_GLOBAL(.*) (.*)[\(;]
 +
 +
 +
とすると、比較的眺めやすいカタチで眺めることが出来ます。#includeで取り込んだヘッダファイル名を選択して右クリックするとヘッダファイルを開く項目がありますので、それで開いてCtrl+Fで検索ツールが出てきて、大文字と小文字を区別するオプションと正規表現モードを有効にして、検索できます。__が付いてる関数は似たような関数を作るためのものなので、インクルードした時に使っちゃいけない関数名を知るという段階においてはあまり気にしなくて良いと思います。
 +
 +
 +
[[C PlusPlus#C++からの技術|C++]]に戻る

2021年2月6日 (土) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス