Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
#1

Оператор = и наследование - C++

12.10.2011, 13:20. Просмотров 443. Ответов 3
Метки нет (Все метки)

Добрый день,
вот есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Copier
{
 
public:
    const Copier& operator = (const Copier&)
    {
        qDebug() << "In const Copier& Operator = ";
    }
 
};
 
class A : public Copier
{
 
public:
/*
    const A& operator = (const A&)
    {
        qDebug() << "In const A& Operator = ";
    }
*/
 
 
};
 
int main()
{
    A a, a1;
    a1 = a;
    return 0;
}
Почему при выполнении копирования a1 = a; вызывается оператор const Copier& Copier::operator = (const Copier&)?
Вроде ж по идеи, оператор присваивания не копируется и должен создаваться неявно компилятором для класса А...

Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2011, 13:20     Оператор = и наследование
Посмотрите здесь:

виртуальный оператор (двусвязный список, наследование) - C++
Здравствуйте! Поставлена задача реализовать двусвязный список, способный хранить объекты классов Circle и Rectangle, которые, как...

Наследование - C++
Написал код, но есть небольшая ошибка. Мне нужно, чтобы с клавиатуры вводилось имя (например James) и он сразу выводил по нему всю...

НАСЛЕДОВАНИЕ - C++
Никак не могу толком разобраться с наследованием классов...мужусь-мужись и только...подскажите плиз как описать класс, который наследует...

Наследование - C++
Четыре класса наследуются друг от друга. Интересует какое в дальнейшем отношение имеют к базовому классу унаследованные члены в производных...

Наследование - C++
&quot;Создать массив объектов базового класса и заполнить этот массив объектами&quot; - вот это непонятно... Как создать массив объектов базового...

Наследование С++ - C++
Есть базовый клас Data. Клас person наследует Data . Клас waiter наследует класы person и Data . Нужно перегрузить операцию вывода для...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
12.10.2011, 14:21     Оператор = и наследование #2
Цитата Сообщение от norge_goth Посмотреть сообщение
Почему при выполнении копирования a1 = a; вызывается оператор const Copier& Copier::operator = (const Copier&)?
Вроде ж по идеи, оператор присваивания не копируется и должен создаваться неявно компилятором для класса А...
Ну дак он и создается, но по стандарту он вызывает все существующие операторы копирующего присваивания непосредственных базовых классов, виртуальных базовых классов, а также членов класса.
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
12.10.2011, 15:09  [ТС]     Оператор = и наследование #3
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну дак он и создается, но по стандарту он вызывает все существующие операторы копирующего присваивания непосредственных базовых классов, виртуальных базовых классов, а также членов класса.
я правильно понимаю, что оператор копирования по умолчанию, копирует Derived часть объекта, а для Base части объекта вызывает const Copier& operator = (const Copier&) ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2011, 15:59     Оператор = и наследование
Еще ссылки по теме:

Наследование - C++
Здравствуйте. Есть класс Shape3D, у которой два виртуальных метода (площадь и объем). Есть наследник параллилепипед, у которого есть...

Наследование в с++ - C++
Люди добрые, помогите пожалуйста. Нужно срочно сдать программу по теме &quot;Наследование&quot;, но че-то не могу написать. Наследование только...

Наследование - C++
15. Описать производный класс, содержащий поле козырь, и функцию, проверяющую кроет ли карта, указанную в качестве параметра другую карту ...

Наследование - C++
Прошу помочь реализовть программу. Задание на русском: Разработать класс CFile,который инкапсулирует в себя такие функции работы с...

Наследование - C++
Всем доброго времени суток! Начали изучать наследование, вроде все и понятно, но и с другой стороны нет(((( Вот вопрос: есть сразу...

Наследование - C++
Создать класс CPoint – точка. На его основе создать классы CcoloredPoint и CLine. На основе класса CLine создать класс CColoredLine ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
12.10.2011, 15:59     Оператор = и наследование #4
Цитата Сообщение от norge_goth Посмотреть сообщение
я правильно понимаю, что оператор копирования по умолчанию, копирует Derived часть объекта, а для Base части объекта вызывает const Copier& operator = (const Copier&) ?
Да, правильно.
Yandex
Объявления
12.10.2011, 15:59     Оператор = и наследование
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru