Копирующее присваивание для производного класса
От: Аноним  
Дата: 18.08.12 09:44
Оценка:
Есть базовый класс X:

class X {
public:
 X();
 X(const X&);
 X& operator=(const X&);
private:
//...
};


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

Спасибо.
Re: Копирующее присваивание для производного класса
От: zaufi Земля  
Дата: 18.08.12 10:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Производный класс Y не содержит данных, а лишь предоставляет некоторые новые функции. Нужно ли явно определять Y(const Y&), Y& operator=(const Y&)? Или по умолчанию будут вызваны соответствующие функции базового класса?


нет, не нужно. все будет хорошо с унаследованными.
Re: Копирующее присваивание для производного класса
От: Caracrist https://1pwd.org/
Дата: 18.08.12 11:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть базовый класс X:


А>
А>class X {
А>public:
А> X();
А> X(const X&);
А> X& operator=(const X&);
А>private:
А>//...
А>};
А>


А>Производный класс Y не содержит данных, а лишь предоставляет некоторые новые функции. Нужно ли явно определять Y(const Y&), Y& operator=(const Y&)? Или по умолчанию будут вызваны соответствующие функции базового класса?

по умолчанию должны вызваться и соответствующие функции полей Y, так что это ограничение лишнее.
http://codepad.org/qroxY7pq
~~~~~
~lol~~
~~~ Single Password Solution
Re[2]: Копирующее присваивание для производного класса
От: Wody  
Дата: 18.08.12 13:06
Оценка:
zaufi, Caracrist, спасибо!
Re: Копирующее присваивание для производного класса
От: Centaur Россия  
Дата: 18.08.12 16:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть базовый класс X.

А>Производный класс Y не содержит данных, а лишь предоставляет некоторые новые функции. Нужно ли явно определять Y(const Y&), Y& operator=(const Y&)? Или по умолчанию будут вызваны соответствующие функции базового класса?

По умолчанию будут сгенерированы копирующий конструктор Y(const Y&) и оператор присваивания Y& operator=(const Y&), реализованные через вызов соответственно копирующих конструкторов и операторов присваивания всех базовых классов в и членов Y в порядке объявления.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.