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

削除された内容 追加された内容
C++/はじめに 2017年1月5日 (木) 13:59 の版から、C言語とC++の比較の解説を引用。こちらに移動する。
Ef3 (トーク | 投稿記録)
→‎CとC++の相違点: C99について加筆 -- C言語はC99以降を前提に執筆されている
35 行
# Cでは引数がない関数の関数原型の引数のリストにはvoidを指定する。一方、C++ではvoidの指定を省略できる。
# Cでは関数原型の記述は推奨されるが任意である。一方、C++では必ず記述しなければならない。
# Cでは関数の戻り値の型がvoid以外の時でもreturn文で値を指定しなくともよい。一方、C++では必ず指定しなければならない<ref>main()の戻り値がintであった場合に限り省略かのうで return 0; が仮定される。</ref>
# Cでは関数の戻り値の型を省略すると整数型が使われる。一方、C++では必ず型を指定しなければならない。
# Cではローカル変数の宣言はブロックの先頭で行う必要がある<ref name="blkdcl">この制限は、C99 で撤廃された。</ref>。一方、C++ではどこで行ってもよい。
# Cではbool型がない<ref name="cbool">C99で、_Bool型が予約語に追加され、標準ライブラリ stdbool.h が追加された。</ref>。一方、C++ではbool型がある。
 
Cの基礎知識については、
86 行
 
* 1行目は、新しいスタイルのヘッダです。<br>Cでは「#include <stdio.h>」のようにファイル名を指定しましたが、これは古いスタイルのヘッダで、C++では新しいスタイルのヘッダを使い、標準識別子を指定します。新しいスタイルのヘッダは、ファイル名ではないので「.h」拡張子がありません。古いスタイルのヘッダは、まだ使用できますが、推奨されません。標準Cヘッダを新しいスタイルで書くと、接頭辞にcが付きます。例えば、「#include <stdio.h>」は「#include <cstdio>」となります。
* 2行目は、std名前空間で定義された識別子(この場合は cout)を std:: 前置句なしに参照可能にしています。
 
* 2行目は、std名前空間を可視状態にしています。<br>C++の新しいスタイルのヘッダをインクルードすると、その内容がstd名前空間に追加されます。名前空間とは、要素の名前が衝突しても識別できるように、名前の集合に対して与えられる識別名のことです。<ref>[http://e-words.jp/w/%E5%90%8D%E5%89%8D%E7%A9%BA%E9%96%93.html 名前空間とは|namespace|ネームスペース|NS - 意味/定義 : IT用語辞典]</ref>
 
* 3行目は、任意の空白行です。
 
* 4行目から8行目は、main関数の定義です。
 
* 5行目から8行目は、ブロックというまとまりです。
 
* 6行目は、出力演算子による出力操作です。<br>Cではコンソール出力に、printf関数を用いましたが、C++では「<<出力演算子」を使って、改善された方法で出力を行うことができます。Cでは「<<」は左シフト演算子でしたが、C++ではその機能に加えて、出力演算子として用いることができます。これは後で解説する演算子のオーバーロードの例でもあります。
 
* 7行目は、return文です。
 
* 6と7行目が、タブ入力により他の行より右から始まるのは、字下げです。
 
162 ⟶ 155行目:
というメソッドの呼び出しに書き換えられて実行されます。
上の説明ではこのことを前提としています。
 
 
 
== オブジェクト指向 ==