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

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

Войти
Регистрация
Восстановить пароль
 
MashaTemn
Сообщений: n/a
#1

Присваивание при полиморфизме - C++

29.12.2013, 01:07. Просмотров 175. Ответов 1
Метки нет (Все метки)

Здравствуйте, помогите, пожалуйста)
Имеем класс A и унаследованный от него B.
Если попытаться присвоить один объект типа B, который "запомнен" с помощью указателя на A, другому такому объекту:
C++
1
2
3
4
5
A* b1;
A* b2;
b1=new B;
b2=new b;
*b1=*b2;
то скопируются только те поля, которые были объявлены в А. Как можно скопировать ещё и поля, объявленные в B?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2013, 01:07     Присваивание при полиморфизме
Посмотрите здесь:

Копирование при полиморфизме - C++
Всем доброго дня ! Почему при полиморфизме вызывается конструктор копировщик только базового класса (строка 70) ? Получаю...

Реализация операторов при полиморфизме - C++
Всем доброго времени суток ! Подскажите пожалуйста как реализовать операторы при полиморфизме, а именно: operator + () operator...

О полиморфизме - C++
проблема с полиморфизмом следующая. Создаю массив указателей на базовый класс, далее заполняю несколько первых ячеек массива ,НО делаю это...

Присваивание переменным значений при выбранном пункте ComboBox - C++
Здравствуйте, уважаемые программисты! Мне 13 лет и я пытаюсь освоить программирование на си ++ самостоятельно. У меня небольшая проблема. ...

Присваивание... - C++
char f = 300; cout << f; system("PAUSE"); char f = 300; int s = f; cout << f; ...

Присваивание - C++
Помогите с оператором присваивания ) class Stack { private: myString *st; .... void operator=(myString); ...

Присваивание = - C++
Есть ли хоть какая-нибудь разница в следующих примерах: a = 0; b = 0; c = 0; и a = b = c = 0;

Класс присваивание a=b=c - C++
Собственно, вот код. Компилируется. Но работает не так как надо.( class Foo #include <iostream> #include <string> using...

Присваивание матиц - C++
Не могу понять, как матрице 2, присвоить элементы матрицы 1. Помогите плиз В заданной матрице F записать на место отрицательных элементов...

Присваивание edit переменной - C++
Добрый день. Почему то компилятор не хочет переводить char в int Код: int z ; strncpy(z, Edit5->Text.ToInt(),...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
29.12.2013, 02:19     Присваивание при полиморфизме #2
тут хитрая вещь может получится. если в иерархии появляется еще один класс C унаследованный от A, то может оказаться так, что мы пытаемся присвоить объекту типа C значение объекта типа B. причем B про С вроде как и не знает. с виртуальными операторами тут лучше не связываться. Решение в лоб: в точке присваивания, раз вы точно знаете типы, скастить ссылку к нужным типам их и вопспользоваться родным оператором:
C++
1
static_cast<B&>(*b1)=static_cast<B&>(*b2);
ну или dynamic_cast если нужна проверка и есть RTTI
Ответ Создать тему
Опции темы

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