オブジェクトを生成します。
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()