在多年的使用C#后,我又回到了C++,开始进行一个与Windows 8/RT相关的游戏项目。在使用生成的游戏项目框架时,我遇到了下面这样的方法签名。请问有人能告诉我^符号的作用是什么吗?
Concurrency::task<Platform::Array<byte>^> ReadDataAsync(Platform::String^ filename)
在多年的使用C#后,我又回到了C++,开始进行一个与Windows 8/RT相关的游戏项目。在使用生成的游戏项目框架时,我遇到了下面这样的方法签名。请问有人能告诉我^符号的作用是什么吗?
Concurrency::task<Platform::Array<byte>^> ReadDataAsync(Platform::String^ filename)
T^
是指向T
对象的句柄。它实际上是一个智能指针,拥有对所指向对象的引用,同时由编译器提供了一些额外的特性。显然,它被称为句柄到对象运算符。
句柄到对象运算符 ^ 被称为“帽子”,基本上是C++智能指针。它所指向的内存会在最后一个帽子超出范围或明确设置为nullptr时自动销毁。
根据:https://msdn.microsoft.com/en-us/library/hh699870.aspx。 (来自该页面的“内存管理”部分。)
^
符号是一个对象的句柄。
例如,String^ s;
声明了一个指向 'String' 对象的句柄。