Winui 3 winrt c++引用计数



使用WinUI 3, Winrt c++在以下代码:
是myRectangle引用计数?还是被复制了?

namespace winrt::MyProject::implementation{
void MyProjectClass::fnc(){
winrt::Microsoft::UI::Xaml::Controls::Canvas myCanvas = CanvasElementFromXAML();
winrt::Microsoft::UI::Xaml::Shapes::Rectangle myRectangle;
myCanvas.Children.Append(myRectangle);
}
}
我在示例中看到这种类型的代码。在c++中(没有MS扩展),如果不复制,这将导致悬空引用/指针,因为myRectangle是一个局部变量,它将超出作用域。myCanvas.Children.Append()接收元素构造;value

void Append(元素构造&值)这里的const引用将传达实参不能被更改,因此ref count不能被修改。

WinRT是基于com的,因此Canvas实例和Rectangle实例都是com对象。

因此,Append的实现将在myRectangle上调用AddRef。在这种情况下,不涉及特定的MS扩展。

最新更新