Форум программистов, компьютерный форум 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.... , то вместо цифр выдать на печать (или поместить... подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.11.2011, 12:46     Неочевидные грабли полиморфизма с++
Цитата Сообщение от Bers Посмотреть сообщение
Ни о чем таком не говорит?
Это говорит о наследовании как таковом, а множественное - это когда и указатели на два разных базовых класса могут указывать на одного и того же потомка, но не друг на друга, то есть когда одновременно:
C++
1
2
3
4
A *p1=new B; // не допустимо
B *p2=new A; // не допустимо
A *p3=new C; // допустимо
B *p4=new C; // допустимо
. У тебя и это есть, а полиморфизм - это вообще возможность перекрывать методы предка, что также имеется в приведённом исходнике.

Добавлено через 7 минут
Цитата Сообщение от Bers Посмотреть сообщение
И потом, класс C здесь - это самый дальний потомок.
О какой дальности может идти речь при одном уровне наследования? C - это ближайший потомок из всех возможных, а здесь - единственный.

Добавлено через 1 минуту
Цитата Сообщение от Сыроежка Посмотреть сообщение
dynamic_cast используется для приведения указателя на базовый класс к указателю на производный класс. При противоположном преобразовании можно использовать обычное присваивание, так как происходит неявное преобразование.
Вывод говорит об обратном.

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
классу A
Точнее классу C, но начало таблицы класса C совпадает с таблицей класса A.

Добавлено через 9 минут
Цитата Сообщение от Bers Посмотреть сообщение
Указатель может быть типа int.
Указателей на int не бывает
наоборот.
C++
1
2
int x;
int *p;
x типа int, но x не указатель, p указатель, но p не типа int. Как раз p и есть указатель на int. "Указатель на тип", "указатель на класс" означает, что:
1. Это указатель.
2. Ему разрешено указывать только на данные определённого типа, или только на на данные определённого класса - того типа/класса, который поминается в словосочетании.
Чтоб не сбивать тебя с толку следовало бы говорить "указатель на данное типа", "указатель на объект класса", но ни кто так длинно не говорит, все сокращают и все понимают, что на саму абстракцию указатель не указывает.

Добавлено через 3 минуты
Цитата Сообщение от Bers Посмотреть сообщение
объект типа int
Не бывает объектов типа int. int не класс, а скалярный тип, переменные этого типа - не объекты.

Добавлено через 3 минуты
Цитата Сообщение от Bers Посмотреть сообщение
Потому что между типом самого указателя, и типом объекта, куда он смотрит жёсткой связи не существует.
И куда ж она делась то? У всех она есть, только в твоей голове как то проделитилась. Может потому у тебя и падает всё, что с указателями, что ты не отличаешь int* от void*?

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

Добавлено через 6 минут
Цитата Сообщение от Bers Посмотреть сообщение
А вот указатель на объект, или функцию, или функцию-член - звучит однозначно.
Как раз неопределённо. Указатель на объект. На какой, простите, объект? На дом? На корабль? На кирпич? А может на домну? Или на пользователя? Прямо так, на настоящего пользователя в реале? А может на машинное представление данных об объекте? Эйси, всегда это подразумевается. Но о каком объекте? О Солнечной Системе? Или о пылинке? А может о стене? Пока не указан тип, не понятно о каком указателе речь, поэтому "указатель на объект" семантически идентично "указатель", прямо так, одним словом. Слово "объект" просто лишнее, оно не несёт ни какой смысловой нагрузки, так как его абстракция запредельна и не лезет ни в какие рамки, кроме как в тексте на метаязыке о самом понятии "объект" и прибамбасах для поддержки объектной ориентированности. И только когда указан класс, объект принимает хоть какие то разумные очертания, но не раньше.
 
Текущее время: 03:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru