オブジェクトを生成します。
pObj = New [[num]] CClass[(parameter)]
New演算子は他の演算子と組み合わせて使用することはできません。
New演算子を実行すると、オブジェクトのメンバ変数を格納するためのメモリがヒープ領域に確保されます。また、コンストラクタが自動的に呼び出されます。
オブジェクトが不要になったら、Delete演算子を使ってオブジェクトを破棄する必要があります。
New演算子、Delete演算子にはクラス以外の型を指定できないので、注意してください。標準の型(クラス以外の型)のメモリ確保を行うときは、malloc関数(またはcalloc関数)、free関数をご利用ください。
Class CHuman pName As BytePtr '名前バッファへのポインタ BirthYear As Long '誕生年 '年齢を取得するための関数 Function GetAge() As Long Dim st As SYSTEMTIME GetLocalTime(st) GetAge=st.wYear-BirthYear End Function Public 'コンストラクタ Sub CHuman(buf As BytePtr, n As Long) 'メモリを確保し、名前をセット pName=malloc(lstrlen(buf)+1) lstrcpy(pName,buf) '誕生歳をセット BirthYear=n End Sub 'デストラクタ Sub ~CHuman() '名前で使用したメモリを解放 free(pName) End Sub 'データを表示するための関数 Sub ShowHumanData(hWnd As DWord) Dim buf[255] As Byte wsprintf(buf,Ex"名前:%s\r\n%d年生まれ\r\n今年で%d歳",pName,BirthYear,GetAge()) MessageBox(hWnd,buf,"Class Test",MB_OK) End Sub End Class Sub Main() 'オブジェクトポインタを定義 Dim pHuman As *CHuman 'オブジェクトを生成 pHuman = New CHuman("Daisuke",1983) Dim hDeskWnd As DWord hDeskWnd=GetDesktopWindow() 'オブジェクトのデータを表示する pHuman->ShowHumanData(hDeskWnd) 'オブジェクトを破棄 Delete pHuman End Sub 'メイン関数の呼び出し Main()