ここが変だよ! #Embarcadero C++Builder (part 2)

今回は不具合ではなくて言語仕様の話をしようと思う。

C++Builder では Delphi のクラスを使えるように拡張されているが、元々異なるものをくっつけたのでちぐはぐになっているという一例がこれ。

Link: C  Builder VCL でのオブジェクト生成 – RAD Studio.

Delphi (Object Pascal)  のクラスでは、最派生クラスのコンストラクターがまず呼び出されて、そこから基底クラスのコンストラクターを入れ子的に呼び出す仕組みなのに対して、C++ では基底クラスのコンストラクターから順に呼び出されるという言語仕様なので、呼び出される順番が異なる―というわけで、木に竹を接いだらこうなりましたというすごい仕様になっていたりする。