京都C++勉強会の宣伝のために、CとC++の違いを、少しづつ解説することにした。
江添とボレロ村上の京都C++勉強会が、12月16日に行われる。これを書いている時点では、まだ空きがあるので、最新のC++14の新機能と、コンパイル時レイトレーシングを勉強したければ、ATNDで参加申し込みをせよ。
江添とボレロ村上の京都C++勉強会 | 集客ならイベントアテンド
今回は式編
C++には関数の暗黙宣言がない
昔のC言語には、関数の暗黙宣言があり、関数名は宣言しなくても使うことができた。C++では、名前は宣言しなければ使えない。
void f() { g() ; // エラー、gは宣言されていない }
C++では、型は宣言の中で定義しなければならない。C言語ではsizeof演算子やキャスト式の中で定義することもできた。
// Cでは合法 // C++では違法 size_t size = sizeof( struct { int i ; } ) ;
条件式、代入式、コンマ式の結果がlvalueになることがある
C++では、リファレンスにより、関数がlvalueを返すこともできる。
これは、lvalueからrvalueへの変換をあてにしていたCコードを壊すおそれがある。例えば以下のようなコードの挙動が異なる。
char arr[100] ; // C++では結果は100 // Cでは結果はsizeof(char *) sizeof( 0, arr ) ;
まあ、この挙動に依存したコードはまれだろう。
江添とボレロ村上の京都C++勉強会が、12月16日に行われる。これを書いている時点では、まだ空きがあるので、最新のC++14の新機能と、コンパイル時レイトレーシングを勉強したければ、ATNDで参加申し込みをせよ。
No comments:
Post a Comment