C ++只使用^代替*?

时间:2016-01-15 11:07:31

标签: .net pointers c++-cli handle

我读过这个例子

MyClass<T> ^ mc = new MyClass<T>();

给出了mc的句柄。

  1. 我可以像使用* mc一样使用^ mc吗?
  2. 我还读过,使用^ mc会在cli-heap中创建自动清理的对象,所以我不必使用 delete mc然后。

    这不是仅使用^ -handles的论据吗?

3 个答案:

答案 0 :(得分:2)

^指针仅用于该语言的Microsoft公共语言运行时修改。如果您使用它们,则锁定项目仅使用Microsoft编译器。如果您正在寻找可移植性,则应使用必须手动删除的传统指针或使用新的C ++ 11功能。

答案 1 :(得分:1)

这是一个扩展,但你可以使用以下方法在标准C ++中实现类似的东西:

auto mc = std::make_unique<MyClass<T>>();

是的,这是使用std::unique_ptr和/或std::shared_ptr的充分理由。

答案 2 :(得分:0)

^是一个托管指针。它是CLI的智能指针。

  

我还读到,使用^mc将在cli-heap中创建将自动清理的对象,因此我不必使用delete mc

是的,这是真的。 CLI运行时具有垃圾收集器。 但CLI是Windows特有的东西,所以它不能在其他环境中工作。