- ベストアンサー
String^の^自体が何を意味しているのか、わかりません。
String^ msg = "テスト"; は、 char msg[] = "テスト"; と同じ意味でしょうか? String^の^自体が何を意味しているのか、わかりません。 TurboCからC言語は殆ど使っていませんので、戸惑っています。 VS2005を覚えようとしているのですが、なかなか取っ付きにくいです。 意識改革できる参考書などご存知の方も教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
簡単にいうと^(ハットマーク)は実体がヒープに確保されるという意味です。 他の方の指摘の通り、これはC++/CLIと呼ばれる言語でC++で.NET Frameworkを 利用するために拡張した言語です。 .NET Frameworkのクラスはガベージコレクションで管理されている為 C++のクラスとは別に管理する必要があります。その為 ^(ハットマーク)をつける事により区別しています。 ちなみにC++マネージ拡張とC++/CLIは違います。 2003以前の仕様をC++マネージ拡張と言い 2005以降のものをC++/CLIと言います。 System::Stringはスタックに置くことは出来ないので System::String^ msg; となります。 System::Drawing::Color等は スタックに置くこともヒープに置くことも可能です。 System::Drawing::Color^ col1 = gcnew System::Drawing::Color(); System::Drawing::Color col2; int test1 = col1->R; int test2 = col2.R; C++/CLIの参考書としては 中 博俊著 「実践 C++/CLI 極めるための基礎と実用テクニック」 がありますが、 まずC/C++を理解していることが前提になっていますので もしC/C++の理解に不安があるようなら先に勉強した方が良いでしょう。 有名な書籍だと「独習C」と「独習C++」があります。 前述の通りC++/CLIは.NET Frameworkを使うためのものですが .NET Frameworkを使いたいのであればC#の方が良いと思います。
その他の回答 (3)
- zwi
- ベストアンサー率56% (730/1282)
StringクラスってことはC++マネージ拡張かな? C++マネージ拡張は、.NETフレームワークにおけるC++の拡張仕様で、C++/CLIとも言います。 私もC++/CLIには詳しくないので、String^が何を意味するかは分かりません。 少なくともTurboCからC++/CLIは間を飛ばしすぎだと思います。 C言語が理解できているのなら、まずC++を勉強されてはいかがでしょうか?オブジェクト指向が分からないとVC++2005は使いこなせません。 その上で、WindowsAPIやMFCなどのWindowsアプリを書く勉強をされたほうが良いと思います。さらにその先でC++/CLIに行けばよろしいかと。 C++の推薦本としては、「明解C++」を推薦します。 http://www.amazon.co.jp/%E6%98%8E%E8%A7%A3-C-%E6%9F%B4%E7%94%B0-%E6%9C%9B%E6%B4%8B/dp/4797334819 ざっと、VC++の機能を参照できる本としては、「Visual C++.NET逆引き大全500の極意」なんかどうでしょうか? http://www.amazon.co.jp/Visual-NET%E9%80%86%E5%BC%95%E3%81%8D%E5%A4%A7%E5%85%A8500%E3%81%AE%E6%A5%B5%E6%84%8F-Windows-2000-NT%E5%AF%BE%E5%BF%9C/dp/4798010960/ref=sr_1_4/503-3751518-7060735?ie=UTF8&s=books&qid=1185932878&sr=1-4
- jacta
- ベストアンサー率26% (845/3158)
> String^ msg = "テスト"; > は、 > char msg[] = "テスト"; > と同じ意味でしょうか? 違います。 > String^の^自体が何を意味しているのか、わかりません。 > TurboCからC言語は殆ど使っていませんので、戸惑っています。 この構文はC言語のものではないので当然です。 C++/CLIについて調べてみるとよいでしょう。 名前こそ似ていますが、C++とC++/CLIは別の言語です。PL/IとPL/SQLほどは違わないという程度に考えてください。
- ryopis
- ベストアンサー率20% (49/238)
"^" が意味しているものはわかりませんが、 string msg = "テスト"; と、 char msg[] = "テスト"; は違います。