「C++/C++特有の概念」の版間の差分

削除された内容 追加された内容
編集の要約なし
75 行
using namespace std;
 
int main()
{
cout << "hello, world" << endl;
return 0;
}
</syntaxhighlight>
99 行
 
この例では、オブジェクト指向を導入した結果として、
 
<pre>
"hello, world"という文字列をprintfする
</pre>
 
という考えから、
 
<pre>
coutと呼ばれるデータに"hello, world"という文字列を与えて、cout自身にそれを解釈させる
</pre>
 
という考えへの移行が行われています。
 
114 ⟶ 118行目:
 
例えば、Cでは標準出力に出力する時には次のようにprintf関数を使いました。
 
<syntaxhighlight lang="C">
printf("abc");
</syntaxhighlight>
 
一方、ファイルに出力する時には次のようにfprintfという異なる関数を使う必要があります。
 
<syntaxhighlight lang="C">
fprintf(f, "abc"); // fはファイルポインタ
</syntaxhighlight>
 
これは、扱う対象が異なっている以上当然ですが、
出力する対象の数が増えて来るとわかりづらくなります。
 
一方、C++を用いると、標準出力に対しては、
 
<syntaxhighlight lang="cpp">
std::cout.operator<<("abc");
</syntaxhighlight>
 
ファイルに対しても、
<syntaxhighlight lang="cpp">
f.operator<<("abc"); // fはファイルストリーム
</syntaxhighlight>
となり、同じ名前の関数 <nowiki> operator<< </nowiki> を用いることが出来ます。
 
ここで、<nowiki> operator<< </nowiki> は、それが所属するオブジェクト(実際にはオブジェクトが所属するクラス)によって動作が変化していることに注意が必要です。
このように、データ自身が実際の動作を知っていることで、
様々なデータを統一的に扱うことが出来ます。
145 ⟶ 155行目:
* 注意
実際に<<演算子を用いた演算を行う時には、
 
<syntaxhighlight lang="cpp">
cout << "abc";
</syntaxhighlight>
 
の部分は、
 
<syntaxhighlight lang="cpp">
cout.operator<<("abc");
</syntaxhighlight>
 
というメソッドの呼び出しに書き換えられて実行されます。
 
上の説明ではこのことを前提としています。
 
267 ⟶ 282行目:
 
入出力演算子を使うには、
<nowiki> <iostream> </nowiki> ヘッダをインクルードする必要がある。
 
コンソールへの出力は次のように行う。
 
<syntaxhighlight lang="cpp">
cout << 式;
</syntaxhighlight>
 
<nowiki><<</nowiki>演算子を複数使うことで、
複数の項目を出力することもできる。
320 ⟶ 337行目:
 
== 参考文献 ==
* 神林靖 監修 Herbert Schildt著『独習C++ 第3版』トップスタジオ訳、翔泳社、2005年11月05日 第3版第10刷発行