Как использовать «= default» с конструктором, который имеет тело? - PullRequest
1 голос
/ 17 апреля 2020

Предположим, у меня есть класс, который имеет пару переменных-членов. Например, в конструкторе копирования я хочу скопировать всех участников и сделать еще немного работы. Вместо того, чтобы явно копировать переменные-члены, как указать компилятору вести себя по умолчанию (скопировать переменные-члены), а также сделать то, что находится в теле функции?

Примерно так:

class X
{
public:

    // This constructor should copy all the members
    // and also do what's inside the constructor's body.   
    X(const X& x) = default
    {
        // Do some work.
    }
};

1 Ответ

1 голос
/ 17 апреля 2020

Это не имеет особого смысла с точки зрения построения, так как задача конструктора - установить данные элемента, и ничего больше.

Но если вам требуется этот шаблон, возможно, для регистрации объекта каким-либо образом например, одно из решений было бы иметь

class Y : public X
{
    Y(const Y&){
        // Do some work
    }
    // No member data here 
};
...