Означает ли C ++ / CX и решает циклы объектов?

Из моего понимания 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, определяет, какой из этих объектов должен быть «корневой объект», и который должен быть «слабой ссылкой»?

11
задан Community 23 May 2017 в 10:30
поделиться