Почему компилятор c ++ не генерирует конструкторскую функцию по умолчанию в некоторых условиях, а генерирует ее в других условиях - PullRequest
0 голосов
/ 16 апреля 2020

Код игрушки выглядит следующим образом:

class DD {
    public:
        int a{0};
        int b{0};

        DD(int a, int b): a(a), b(b) {}
};

void main() {
    DD d1;
    DD d2(d1);

}

Это не пройдет проверку компиляции, так как я определил функцию построения DD(int a, int b), с которой компилятор не будет генерировать функцию построения по умолчанию. Однако, похоже, это не влияет на создание функции построения по умолчанию DD(DD& d)

class DD {
    public:
        int a{0};
        int b{0};

        DD(int a, int b): a(a), b(b) {}
};

void main() {
    DD d1(1, 2);
    DD d2(d1);
}

Почему это может работать? Кажется, что, как я определил DD(int, int), компилятор не будет генерировать другие функции построения по умолчанию, но почему я все еще могу создать объект с DD(DD&)?

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