C ++: поведение между списком инициализации и телом конструктора - PullRequest
0 голосов
/ 24 марта 2020

В чем разница между этими двумя вариантами? Кажется, они ведут себя точно так же.

class A{
public:
    A():b(nullptr)
        {
            b = this; // variant 1
            b.a = this; // variant 2
        }
    class B {
    public:
        B(A* a):
            a(a){}
    private:
        friend class A;
        A* a;
    };
    B b;
};

1 Ответ

0 голосов
/ 24 марта 2020

В первом варианте используется неявный конструктор, что означает, что b перестраивается с использованием указателя this. Второй вариант просто изменяет значение b.a. Обратите внимание, что в этой простой реализации нет разницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...