アプリ版:「スタンプのみでお礼する」機能のリリースについて

Visual C++ 2008で、新しいwindowsフォームアプリケーションを作成したら、Form1.hの上の方に

public ref class Form1 : public System::Windows::Forms::Form

という行がありました。これは開発環境に実装されている
System::Windows::Forms::Formクラスを継承し、Form1クラスを新たに作成しますという意味なのですよね?

このとき、2つ目のpublicは、継承の仕方、この場合結果的にはSystem::Windows::Forms::Formクラスに含まれるメンバの、private以外がそのまま受け継がれる、という事になりますよね?

それで、このref classというのは、ポインタみたいな意味でしょうか?refは書かないと別の継承方法になるのでしょうか?
また、最初のpublicはどういう意味なのでしょう?

もしかして、この2つについては、System::Windows::Forms::Formクラスを継承して新規フォームを作る場合の、定型みたいなものなのでしょうか?

A 回答 (2件)

最初のpublicはこのプロジェクトにForm1クラスを公開するのに必要です


refは一般的なC++の構文にはありません
これは C++/CLIという特殊な環境で使う構文です
C++/CLIでは オブジェクトをポインタ扱いで使いますのでForm1クラスの実体をオブジェクトのを ^記号付で表します

Form1^ obj;
などといった宣言をします

一般的なC++のクラス宣言なら

public class Form1 : pulic System::Windows::Forms::Form
といった具合に記述します
Form1のオブジェクトを宣言する場合
Form1 obj, *pObj;
といった具合になります objは実体、pObjはポインタ といった具合です
    • good
    • 0
この回答へのお礼

なるほど!
^記号までつながりがあるとは驚きました。
ご丁寧にありがとうございます。
^記号といえば、メインプロジェクトファイルに
int main(array<System::String ^> ^args)
って書いてありましたが、このように右側の文字につく場合はどういう意味があるのでしょうか?
また、この()内全体はどういう意味なのでしょうか?

お礼日時:2008/11/09 11:45

変数などの左側に書くか、変数の型の右側に書くかはいろいろあります



変数の右側に書いたほうが直感的になると思います
たとえば
char *pbuf, ch;

char* pbuf, ch;
と書いた場合 chの型を初心者の方は読み間違える可能性があります
どちらの構文も chは char型ですが ・・・

間違われないように
char* pbuf;
char ch;
などと明示的に行を変えるといった方法もあります
    • good
    • 0
この回答へのお礼

内容としては同じというわけですね。
ありがとうございました。

お礼日時:2008/11/09 17:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!