オンライン健康相談、gooドクター

String^ msg = "テスト";
は、
char msg[] = "テスト";
と同じ意味でしょうか?

String^の^自体が何を意味しているのか、わかりません。
TurboCからC言語は殆ど使っていませんので、戸惑っています。

VS2005を覚えようとしているのですが、なかなか取っ付きにくいです。
意識改革できる参考書などご存知の方も教えてください。

gooドクター

A 回答 (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#の方が良いと思います。
    • good
    • 2

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 …
ざっと、VC++の機能を参照できる本としては、「Visual C++.NET逆引き大全500の極意」なんかどうでしょうか?
http://www.amazon.co.jp/Visual-NET%E9%80%86%E5%B …
    • good
    • 0

> String^ msg = "テスト";


> は、
> char msg[] = "テスト";
> と同じ意味でしょうか?

違います。

> String^の^自体が何を意味しているのか、わかりません。
> TurboCからC言語は殆ど使っていませんので、戸惑っています。

この構文はC言語のものではないので当然です。

C++/CLIについて調べてみるとよいでしょう。
名前こそ似ていますが、C++とC++/CLIは別の言語です。PL/IとPL/SQLほどは違わないという程度に考えてください。

参考URL:http://vene.wankuma.com/ecma372/StartingState.aspx
    • good
    • 0

"^" が意味しているものはわかりませんが、


string msg = "テスト";
と、
char msg[] = "テスト";
は違います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング