Форум программистов, компьютерный форум 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, 11:14     Неочевидные грабли полиморфизма с++
Цитата Сообщение от Bers Посмотреть сообщение
По-моему, срезка - это когда большой объект приводится (интерпритируется) как более мелкий.
Приводится и интерпретируется это два абсолютно разных понятия.
Более того, невозможно изменять интерпретацию объектов. Интерпретировать можно лишь указатели.
Что такое приведение объекта? Это вызов копирующего конструктора. Виртуальных конструкторов не бывает, поэтому при копировании(приведении типа) копируются не все данные. Это и есть срезка.
О том, что такое срезка я уже писал выше, поэтому повторю

Цитата Сообщение от Deviaphan Посмотреть сообщение
То, что ты не желаешь читать - не мои проблемы
Добавлено через 2 минуты
Придумал, как объяснить нагляднее!
Смотри, читай, задавай вопросы.
C++
1
2
3
4
5
6
class A;
class B : public A;
 
B b;
A * a1 = &b; // нет срезки
A a2 = b; // есть срезка
Добавлено через 3 минуты
Специально для тебя Дьюхэрст написал книгу "Скользкие места C++".
Глава по "срезке" на странице 77. Если и после этого просветление тебя не посетит, то прекращай использовать наследование в любых формах. Указателями лучше тоже кончай пользоваться.
 
Текущее время: 14:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru