0

我对 C++ 有经验,但我才开始学习 C++/CLI。我经常注意到以下模式:

array<String^>^ x;

你们怎么看这个?我的解释是,这是字符串数组,我们希望它们都在托管堆上,这就是我们使用 String^ 的原因,但我们也希望向量在托管堆上,这就是我们有

array<something>^.

正确的?

4

1 回答 1

3

C++cliref class必须位于托管堆上。实际的非托管堆实例被阻塞。

两者Stringarray都是ref class类型,因此它们必须位于托管堆上。

C++,为了提醒用户这些是垃圾回收指针类型,而不是字面量或传统指针类型,要求您以^.

虽然这是多余的(所有实例array<>都是array<>^- 因此在没有此类^标记的 C# 中),但当您混合托管代码和非托管代码时,提醒您这是托管类型而不是普通类型可能会有所帮助。

于 2013-07-17T19:51:09.000 回答