H-5 第5章の相違点

ヘッダと呼ばれる別ファイル

Delphi のプログラムコードは、interface 部と呼ばれる部分と implementation 部と呼ばれる部分に分かれています。この、Delphi で interface 部と呼ばれる部分が、C++ ではヘッダファイルと呼ばれる別のファイル (拡張子は「.h」) になっています。

このヘッダファイルを開くには、コードエディタの上で右クリックし、「ソース/ヘッダー ファイルを開く」を選びます。

関数の形

【基礎課題 5-4】で扱った関数 Average は、x, y, z の3つの整数を受け取り、1つの実数を返します。Delphi では

function TForm1.Average(x, y, z: Integer): Real;
begin
  Average := (x + y + z) / 3;
end;

と書きましたが、C++Builder では

double TForm1::Averate(int x, int y, int z)
{
  return (x + y + z) / 3;
}

となります。この2つを見比べて分かるように、C++Builder では

  1. function と書かれていません。これは、C++ のプログラムは基本的に関数 (function) から成り立っており、わざわざ function と書く必要がないからです。
  2. TForm1 の後が . ではなく :: になっています。
  3. 返り値の型 (Real / double) や引数の型 (Integer / int) は、関数や変数の後ではなく前に書きます。
  4. 関数名の宣言部分には、行末に ; をつけません。関数内の、処理内容を記述する部分には、行末に ; をつけます。
  5. 返り値は return 文で指定します。

手続き

Delphi における関数 function と手続き procedure は、C++ ではどちらも関数です。Delphi の手続き function は C++ では「返り値を持たない関数」として、返り値の型に void (何もない) を指定します。

【基礎課題 7-4】のような、線を引く手続き Line は、Delphi では

procedure TForm1.Line(x1, y1, x2, y2: Integer; cl: TColor);
begin
  〔省略〕
end;

となりますが、これが C++Builder では

void TForm1::Line(int x1, int y1, int x2, int y2, TColor cl)
{
  〔省略〕
}

となります。

引数を持たない関数

5-5 の KeisanHantei は、Delphi では

procedure TForm1.Keisan;
begin
  〔省略〕
end;

と書きましたが、このように引数がないものは、C++ では

void TForm1::Keisan(void)
{
  〔省略〕
}

というように、引数がないことを示すために必ず (void) と書きます。

補足 実は最近のC++では、例えば Keisan() と記述しても引数がないと解釈してくれます。しかし、C言語では引数が不定と解釈されてしまい、不都合が生ずることがあります。いずれにしても、よいプログラミングという観点から、明示的に (void) と記述することを強く勧めます。

uses 節は #include 文に

Delphi でよく使われる uses 節は、C++ では #include 文になります。例えば、Delphi で

uses abc;

とあった場合、C++ では

#include <abc.h> // 標準として C++Builder に最初から備わっているユニットの場合

又は

#include "abc.h" // プログラマが自分で作ったユニットの場合

と書きます。