C++ 只使用 ^ 而不是 *?

C++ only using ^ instead of *?

我读过,例如

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

给出 mc 的句柄。

  1. 我可以像使用 *mc 一样使用 ^mc 吗?

我还读到,使用 ^mc 会在 cli-heap 中创建自动清理的对象,所以我不必使用 delete mc然后。

难道这不是只使用 ^-handles 的论点吗?

这是一个扩展,但您可以使用标准 C++ 实现类似的功能:

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

是的,这是尽可能使用 std::unique_ptr and/or std::shared_ptr 的一个很好的理由。

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

^ 是托管指针。它相当于智能指针的 CLI。

I also read, that using ^mc will create the object in the cli-heap that will automatically cleaned up, so I don't have to use delete mc then.

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