C++ 只使用 ^ 而不是 *?
C++ only using ^ instead of *?
我读过,例如
MyClass<T> ^ mc = new MyClass<T>();
给出 mc 的句柄。
- 我可以像使用 *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 特定的东西,所以它不能在其他环境中工作。
我读过,例如
MyClass<T> ^ mc = new MyClass<T>();
给出 mc 的句柄。
- 我可以像使用 *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 usedelete mc
then.
是的,没错。 CLI 运行时有一个垃圾收集器。 但是 CLI 是 Windows 特定的东西,所以它不能在其他环境中工作。