- 締切済み
VC++.NETと標準C++とSTLの相性などの質問事項
自己研鑽のために、標準C++を学習し、STLについても学習しました。仕事で、Javaの経験が半年以上あります。正直な感想、勉強してみると、C++のほうが、気に入ってしまいました。 マイクロソフト関連の仕事をしたことがなく、VisualBasicすらありません。最近では、C#.NETなどがでてきています。 C#2.0やjavaのJ2SE5.0ででてくるGenericや、コレクションクラスにGenericを考慮したものが でてくる。など、C++のSTLの模倣のように感じました。 C#にはデリゲートがあるようですが。関数ポインタや関数オブジェクトそのまんまに見えます。 C#2.0が気になりますがまだ、ベータ版で未来の話なので、Visul C++.NETに興味を持ちました。せっかく勉強した標準C++やSTLの知識はそこでは役に立つのでしょうか。.NETにはそちのほうで独自のstring型やコレクション型があるのではないでしょうか? .NETだと、マネージコードなどガベージコレクトがあるようです。STLのコンテナはそれぞれ内部でデストラクタがヒープの内容を廃棄してくれますが、ガベージコレクトの環境で普通にSTLを使うとどういうことになるのでしょうか? 今度、Visual C++.NETの学習をはじめるかどうかの判断材料にしたいので、現時点までの知識が有効活用できるかどうかを知りたいです。宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
回答No.3
補足
回答ありがとうございます。 >また、C++.NETでもマネージコードを使わないという選択(今まで通りのネイティブコードを使う選択)も可能ですね。 へぇ、そういう風な選択が可能なんですかぁ。 マネージコードってなんでしょう。 .NETのランタイム上で実行されることを想定した ガベージコレクトがなされるコードという認識でしょうか? マネージ・アンマネージの切り替えは、クラス単位で やるのでしょうか? マネージコードの対象として定義したクラスを 使っているクラスがアンマネージコードの時、 newした後のdeleteはしなくてよいのだろうか? .NETフレームワークのクラス郡はC#やVBなどでも、 使用しているのと、おなじシステムで用意された アセンブリ .dllファイルを使うのかな? だとしたら、.NETで用意されているクラス群は マネージコードに思われる。 自分が定義したアン・マネージドなクラスから .NETで用意されているクラス群をヒープに newして作ったらdeleteはいるのだろうか? newしているところのコードがマネージドか アン・マネージドか、 newされた側のクラスがマネージドか、アンマネージド か 4通りのパターンがありそうですが、それについて どのような挙動になるかの具体的な解が分かれば、 私が質問したSTLをVC++.NETで使用した時にどうなるかが わかりそうですが・・・・。 それは、実際に学習してみて詳細を知るのでしょうが、 今回は、VC++.NETを学習することが、他にいろいろやり たいことに優先させてでもすべきかを判断したいが ための質問で。 なので、例えば、上記の4通りの挙動をうまくプログラマ が選択して、コントロールしながら、問題なくやっていけるような仕組みに実際もんだいなっているかどうかを 知りたいです。 なお、詳細は本格的に学習してみてからになりますし、 掲示板で詳細に説明するのも限界があるので、 概要程度の説明で、上記のようなことが可能なのかを 知りたい。 >別に言語やSTLに限らず、鵜呑みにした知識でなければ役に立つでしょう。 >直接的に役に立つかといえば、言語に依存する知識は似て>はいても言語が変わると役に立たないとも言えるでしょう。 おっしゃることはよくわかりますが、 いくら将来の自己研鑽のためであっても、あまり実際上役に立ちそうにない、 PascalやSmallTalkを自らすすんでやる人もいないです。 考え方が将来役にたち、かつ、直接的にも役にたつ。 ものをできれば選択したいのではないでしょうか? STLと.NETをつなぐようなアダプターのようなクラスが あると、よいのですが。 Javaなどでもデコレーターパターンやアダプタパターン で使っている側にはあたかも、別のインターフェースで あるように見せるような考え方があると思います。 要求している側が.NETのコレクション型を欲している から、実態はSTLだけどそれを意識させないような インターフェースの調整するための仕組みが 既にマイクロソフトまたは、オープンソースなどで、 用意されているなどが、 あれば、直接的にSTLを役にたてるように もっていけるのでしょうが、それがあるかどうかとか そういう知識が私にはないので、それを収集するために たてた質問スレなんです。