Delphi のインターフェイス
Object Pascal のコンパイラは、インターフェイスを扱うときに、細部にわたって多くの処理を自動的に行います。 アプリケーション コードがインターフェイス ポインタを取得するとインターフェイスの参照カウントを自動的に増やし、そのインターフェイスがスコープから外れると参照カウントを自動的に減らします。
C++Builder では、DelphiInterface テンプレート クラスが、このような便利な機能の一部を C++ のインターフェイス クラスに提供します。 Object Pascal のインターフェイス型を使用する RAD Studio ライブラリのプロパティおよびメソッドに対して、C++ ラッパーは、ベースとなるインターフェイス クラスを使用してビルドされた DelphiInterface を用います。
DelphiInterface のコンストラクタ、コピー コンストラクタ、代入演算子、およびデストラクタはすべて、必要に応じて参照カウントを増減します。 ただし、DelphiInterface は、Object Pascal でコンパイラがインターフェイスにサポートする機能ほど、便利ではありません。 ベースとなるインターフェイス ポインタにアクセスする他の演算子は、参照カウントを処理しません。処理をどこで行うのが適切か、クラスが必ず指示できるわけではないからです。 明示的に AddRef または Release を呼び出して、参照カウントを適切に保つ必要があります。