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

Неочевидные грабли полиморфизма с++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Таймер в програме http://www.cyberforum.ru/cpp-beginners/thread389684.html
Как сделать такой таймер: Нужно, чтобы значение переменной некоторого объекта увеличивалось через определенный интервал времени. При этом чтобы можно было вводить значения с клавиатуры. Просто чтобы объект сам модифицировался где-то на заднем плане. Без потоков можно как-то. winApi???? Добавлено через 52 минуты up up up
C++ Сортировка вставкой Всем привет. Задали задание написать код сортировки вставкой. Писал код по блок-схеме. Код получился нерабочий. Помогите найти ошибку. #include <stdio.h> #include <conio.h> int main() { int a; int n, i, j, x; printf ("Enter the number of elements "); scanf ("%d", &n); http://www.cyberforum.ru/cpp-beginners/thread389681.html
C++ Перегрузка операторов
Доброго времени суток. на завтра надо сделать работу, а я не могу понять как использовать перегрузку операторов. помогите пожалуйста разобраться вобщем надо найти количество значений переменных типа _Floors, _Flats, _Rooms.., вот код... // BSU012.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream>
Не могу объявить массив указателей на объект C++
Здравствуйте! Такой вопрос. При объявлении массива указателей на объект появляются 3 ошибки. void Cindex::merge(Ckey *A, int l, int m, int r) { int i, j; Ckey *Ax; for(i = m+1; i > l; i--) *Ax = *A; for(j = m; j < r; j++) *Ax = *A; for(int k(l); k <= r; k++) if(Ax->Getoffset() < Ax->Getoffset()) *A = *Ax; else
C++ рестарт http://www.cyberforum.ru/cpp-beginners/thread389674.html
как сделать автоматический рестарт программы после окончания ее работы? на примере
C++ Преобразование числа в символ. Здравствуйте, пишу программу перевода числа из Р-ичной системы счисления в Q-ичную. Столкнулся с такой вот проблемкой... При Q<10 все работает корректно, а вот при Q>10 вместо букв A,B,C,D.... выдаются цифры 10, 11, 12, 13.... соответственно, что само по себе естественно. Хочу сделать так: если остаток при целочисленном делении равен 10, 11, 12.... , то вместо цифр выдать на печать (или поместить... подробнее

Показать сообщение отдельно
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.11.2011, 10:43     Неочевидные грабли полиморфизма с++
Цитата Сообщение от Bers Посмотреть сообщение
по сабжу, именно поэтому и происходила срезка
Там НЕТУ срезки. Перечитай приведённую тобой ссылку более внимательно. При срезке данные ТЕРЯЮТСЯ, в твоём примере ничего не теряется. "Срезанный" объект уже невозможно вернуть к исходному состоянию. Повторяю, у тебя НЕТ срезки. Срезка бывает только при использовании объектов по значению. При передаче через указатель срезки не бывает.


Цитата Сообщение от Bers Посмотреть сообщение
У человека была самодельная фабрика, которая производила объекты типа ЦЕ, а наружу выдавала указатели на А.
И уже снаружи, вызывающая сторона приводила А к чему ей было нужно, ничего не зная о том, какой в действительности был сконструирован объект самой фабрикой
У человека была ошибочно спроектирована архитектура проекта. Смысл абстрактных фабрик именно в том, чтобы не заморачиваться на счёт действительного типа объекта...


Цитата Сообщение от Bers Посмотреть сообщение
Итого: неоправданное падение производительности там, где этого можно было с лёгкостью избежать.
Именно так. Но падение производительности сперва нужно доказать.)


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

Добавлено через 56 секунд
Цитата Сообщение от Bers Посмотреть сообщение
Избегайте множественного наследования.
...в тех ситуациях, когда множественное наследование не нужно.
 
Текущее время: 22:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru