あれやこれやと今、VisualC++でC++/CLIのことを
まとめています。
やはり、標準C++の構文とは大分違いますね。
オブジェクト指向の内容に合わせて覚えると良いと思います。
クラス宣言
ref class Animal
refがつきます。WindowsFormアプリケーションでFormのソースを見ても
refがついています。
インスタンスを作るときはnew でなく gcnew
また、インスタンスに対応した変数はハンドル変数になります。
例えば、
Animal^ animal = gcnew Animal();
となります。ちなみに、newに対応してdeleteが標準C++にはありますが、
C++/CLIにはありません。ガベージコレクションがやってくれます。
Javaと同じです。
つまり、基本データ型は何も変わりませんが、参照型はハンドルになります。
これも2種類のポインタが存在したためです。
カプセル化
C++/CLIではプロパティを使います。
ref class Animal
{
private: String^ _name;
public: property String^ name
{
String^ get()
{
return _name;
}
void set(String^ value)
{
_name = name;
}
}
とこんな感じです。インスタンス変数をプライベートにして外から使えないようにして、
公開されているプロパティを利用させるということです。
やっていることはJavaのアクセサメソッドと同じ感じです。
継承。これは、標準C++と同じです。
抽象クラス
使う言葉は、abstractでJavaと変わりはないのですが、
記述位置がことなります。
java: abstract class Animal
C++/CLI: ref class Animal abstract
オーバーライド
する方、される方ともに
virtualが付きますが、オーバーライドするときは
overrideがつきます。
インターフェイス
public interface class I~
classの前にinterfaceが付きます。
インターフェイスの中ではメソッドの定義だけ。
加えて、virtualがつきます。
インターフェイスを実装するクラスでは、C++と同じで
クラス名の後にコロンを書いてそのあとにインターフェイス名を書きます。
実装しなければならないメソッドには
virtualは要りますがoverrideは要りません。
いろいろですね。
0 コメント:
コメントを投稿