Форум программистов, компьютерный форум, киберфорум
Наши страницы

Перегрузка конструктора копирования и оператора присвоения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дальнейшее изучение С++ http://www.cyberforum.ru/cpp-beginners/thread444347.html
Вот хотел у вас спросить, что дальше можно почитать после Бьярне Страуструп Программирование: принципы и практика использования C++, и после Р.Лафоре ООП в С++, планирую купить по WinApi и что то еще...
C++ полноэкранный режим консоли Здравствуйте! Не могли бы подсказать, как программно переходить в полноэкранный режим в консоле? (Именно переходить, а не получать информацию, является ли режим полноэранным) Добавлено через... http://www.cyberforum.ru/cpp-beginners/thread444341.html
C++ Преобразовать выражение в постфиксную форму
Преобразовать выражение, составленное из цифр и знаков арифметических операций (+,-,*,/) в постфиксную форму. В постфиксной форме сначала записываются операнды, а затем знак операции. Обычная запись...
C++ Построить некоторый Автомат на три команды
Некоторый автомат может запросить два числа и выполнить 3 команды. Команда А преобразует имеющуюся пару чисел (х, у) в (х-у,у), команда В преобразует пару чисел (х,у) в пару (х+у,у), команда С...
C++ Векторы http://www.cyberforum.ru/cpp-beginners/thread444323.html
Определите полусумму длин двух векторов А(1,5; 2,5; -0,3) и В(-11,7; -9,3; 2,5; 3,7; -1,2). Вычислите, длины вектора оформив в виде функции.
C++ Модуль Разработать и отладить программу состоящую из модуля, который содержит процедуру, которая обнуляет элементы матрицы под главной диагональю и функцию, которая определяет среднеарифметическое... подробнее

Показать сообщение отдельно
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
11.02.2012, 17:40
не нужно путать статические и динамические типы. первые определяются на этапе компиляции, вторые - на этапе выполнения.
на этапе выполнения в *(*(temp+i)) находится объект типа book(или что там у вас). но компилятору нас*ать, что там на этапе исполнения. на этапе компиляции все что он видит - указатель на publication и генерирует соответствующий код для объектов типа publication. для того, чтобы он на этапе компиляции генерил присваивание book::operator=, придется явно ему это указать, например, так
C++
1
*((book*)*(temp+i))=*((book*)*(ipublist+i));
но это совсем не ок и опасно. для этого и придумали dynamic_cast, который безопасен в плане полиморфного приведения типов на этапе выполнения(!!!), т.е. на этапе выполнения у вас и будет по функциональности это
C++
1
*((book*)*(temp+i))=*((book*)*(ipublist+i));
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.