C言語とC++の違い

c-cplus.png

C言語にあってC++にない機能

C言語にあってC++にない機能がいくつかある。
でもこれは、古臭いから廃止されたような機能なのである。
もし他の人が古臭いCスタイルで書いていて、わけがわからない!と混乱しないために、
知識として持っておこう。

引数型を指定せずに宣言された関数は、任意の型の任意の個数の引数を取ることが出来る。

void f();//引数が指定されていない
void g(){
    f(2);//Cではok
}

引数リストの後ろに引数の型を指定する形で関数を定義できる

void f(a,p,c) char*p;char c;{}//C-style
void f(int a,char* p,char c){}//このように書きなおすべき

暗黙のint

型指定子はデフォルトでintである

const a=7;//Cではintとみなされるが、C++にはなっていない。

現在、暗黙のintは認めない方向で検討中である。

戻り値の型、引数宣言の中でstructを定義出来る

struct S{int x,y;}f();//C-style
void g(struct S{int x,y;} y);

C++の型定義の規則は、このような宣言を不要とすると同時に、この種の宣言を認めなくなった。

列挙型の変数に整数を代入することができる

enum Direction{up,down};
Direction d=1;//C++ではエラーだけどCではok

変数を何回も複数回定義できる

Cではこんな意味不明なことができる

int i; int i;//Cでは単一の整数iを定義したことになる。C++では許されない。

C++では、実体の定義は一度だけでなければならない。

c cplus

サポートサイト Wikidot.com ccplus