Из моего понимания C ++ / CX не используют сборку мусора, вместо этого используют ссылочный подход.
Проблема со ссылкой на ссылку состоит в том, что она не может распоряжаться циклами. Циклы обычно решаются с использованием слабых ссылок, такие как Solid_ptr в стандарте C ++.
Но я не могу найти путь в 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, определяет, какой из этих объектов должен быть «корневой объект», и который должен быть «слабой ссылкой»?