据我的理解,C++/CX并不使用垃圾回收,而是使用引用计数方法。
引用计数的问题是它无法处理循环引用。循环引用通常使用弱引用来解决,例如在标准C++中使用的weak_ptr。
但我在C++/CX中找不到明确指定弱引用的方法。由此我认为这是由C++/CX本身处理的。我想知道C++/CX将如何解决此问题。
例如,请看下面的代码:
ref class Foo
{
public:
Bar^ bar;
};
ref class Bar
{
public:
Foo^ foo;
};
ref class App
{
public:
virtual void OnLaunched(LaunchActivatedEventArgs^ args)
{
Foo^ foo = ref new Foo();
Bar^ bar = ref new Bar();
foo.bar = bar;
bar.foo = foo;
}
};
C++/CX 如何检测这个循环引用?
C++/CX 如何解决这个循环引用?
C++/CX 如何确定这些对象中哪一个应该成为“根对象”,哪一个应该成为“弱引用”?