C、C++、Javaの比較
C、C++、Javaは、言語機能と実行モデルに違いがあります。
| 機能 | C | C++ | Java |
|---|---|---|---|
typedef |
O | O | X |
#define |
O | O | X |
goto |
O | O | 予約語だが利用不可 |
| 構造体 | O | O | X |
| 共用体 | O | O | X |
| 手動メモリ管理 | O | O | X |
| 演算子オーバーロード | X | O | X |
| 関数またはメソッドのオーバーロード | X | O | O |
| クラスの多重継承 | X | O | X |
| プラットフォーム非依存のバイトコード | X | X | O |
main関数
CとC++のプログラムは main 関数から始まります。Javaアプリケーションではクラス内の main メソッドを使います。
C++
#include <iostream>
int main(int argc, const char *argv[]) {
std::cout << "Hello, World!\n";
return 0;
}
Java
public class Main {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
CとC++の main は int を返し、パラメータは省略できます。Javaでは public static void main(String[] args) を使います。
defineマクロ
CとC++にはプリプロセス処理があります。#define マクロはコンパイル前にトークンを置換します。
#define HELLO "Hello, World!\n"
#define MAX(a, b) ((a) > (b) ? (a) : (b))
Javaには同等のプリプロセッサ指示子はありません。定数は一般に static final で宣言します。
public static final String HELLO = "Hello, World!\n";
可能であれば、マクロより定数、列挙型、インライン関数などの言語機能を優先してください。マクロを多用するとデバッグが難しくなります。