2007/05/31(木)VC独自仕様?
^とかいう修飾子が増えてました.
ガベージコレクションできちんと追跡できるようになったポインタのようです.
VS 2005 EEドキュメント中の"C++ Language Reference"に説明が載っていますが,これって.NETの独自拡張ですよね?
CLR用,というかメモリ管理のための拡張が意外と多そうです.
勝手にメモリを解放してもらえるのは楽だけど,仕様がいろいろ追加されていて追いかけるのが大変.
メモ
1: ref class myclass { 2: int i; 3: }; 4: int main(void){ 5: myclass ^obj = gcnew myclass(); 6: int %ti = obj->i; 7: ti = 100; 8: return 0; 9: }
1:マネージ型としてクラスを定義
こうしておくと,マネージドヒープ上にクラスを構築できる.
5:マネージ型はnewではなく,gcnewを使う
受け取るポインタ側も*ではなく,^を使う
6:マネージドヒープ上の値を参照する場合,&ではなく,%になる
従来のC++で書くとこんな感じ.
メモリ削除をガベージコレクションに任せずに自分で削除する必要がある.
1: class myclass { 2: int i; 3: }; 4: int main(void){ 5: myclass *obj = new myclass(); 6: int &ti = obj->i; 7: ti = 100; 8: delete obj; 9: return 0; 10: }
2007/05/31(木).NET
いつまでのVC6を使ってるのもなんなので,VC++ 2005 EEを使ってみることにしました.
で,最初に思ったこと.
何したらいいの?(汗)
結構,というか,根本的に変わってますね.
今までWindows APIとかMFCでプログラムを組んでいたので,.NETのメソッドは全然わからない.一応,GUIはある程度さわっていたので仕組みは分かるのですが,目的のメソッドがどこにあるのか分かりません.
MSDN ライブラリを参考に作り始めてはみたものの,プログラムを書く時間より,メソッドを探している時間の方が圧倒的に長くなってます.
VS2005 アカデミックなら5000円で買えるので買ってしまおうかな.
って,アカデミックライセンスって大学出ると使えなくなってしまうのかな?
それだと意味無いので無難にStandardのUpgradeのほうがいいのか.