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++の mainint を返し、パラメータは省略できます。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";

可能であれば、マクロより定数、列挙型、インライン関数などの言語機能を優先してください。マクロを多用するとデバッグが難しくなります。