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

Указателю на базовый класс присвоить адрес производного класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Текстовый файл/ Отредактировать текст, заменяя в нем повествовательные предложения восклицательными, а восклицательные – вопросительными http://www.cyberforum.ru/cpp-beginners/thread788144.html
Моя задача звучала следующим образом: " Дан текстовый файл. Отредактировать текст, заменяя в нем повествовательные предложения восклицательными, а восклицательные – вопросительными. По нажатию произвольной клавиши выделить последнее отредактированное предложение. " Небольшую трудность составляет именно выделение последнего отредактированного предложения. Мы должны запоминать позицию...
C++ Шаг в 0,5 Вычислить значение функции y={x}^{5}-\sqrt{x} При 0 \leq X \leq 5 c шагом в 0,5 Т.е. x 0 0.5 1 1.5 2 http://www.cyberforum.ru/cpp-beginners/thread788138.html
переделать программу Pascal -> C++ (Восстановить исходную матрицу и напечатать ее по строкам) C++
с паскаля на с++...буду очень признателен. вот текст задачи. Квадратная матрица, симметричная относительно главной диагонали, задана своим верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и напечатать ее по строкам. Под директивой iostream uses crt; const nmax = 20; var
C++ Классы и объекты (Класс Student)
Разработать консольную программу на языке С++, в которой описывается и используется простой класс для объектов индивидуального варианта. Поля данных класса должны быть закрытыми, а доступ к ним должен осуществляться с помощью открытых методов. Кроме полей с данными в классе должны быть конструкторы, деструктор и другие методы класса в соответствии с заданием. Создать массив объектов. Student:...
C++ Повторяющиеся символы в строке http://www.cyberforum.ru/cpp-beginners/thread788128.html
Помогите создать функцию пжл, нужно что бы она проверяла повторяющиеся символы в строке. я написал программу НО она проверяет повторяющиеся символы которые стоят рядом, и не могу догадаться что нужно исправить что бы она по всему слову проверяла повторяющиеся символы. Вот моя программа на С++ #include "stdafx.h" #include <iostream> #include <string> #include <windows.h> #include <fstream>...
C++ Распознавание по цвету (c opencv). Динамические массивы Здравствуйте, форумчане :) Задача стоит следующая - распознавать оранжевый прямоугольник и заносить его координаты в массивы. Компилятор не выдаёт ошибок, но исполняемая программа упорно вылетает в моменте помещения данных в массивы. "Необработанное исключение в "0x775ae6c3" в "test1.exe": 0xC0000374: Куча была повреждена." Так же, мне было бы приятно выслушать критику по поводу общего... подробнее

Показать сообщение отдельно
ITcrusader
Эксперт C++
 Аватар для ITcrusader
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
17.02.2013, 16:19     Указателю на базовый класс присвоить адрес производного класса
Объясняю:
Открытое наследование описывает связь между классами, которая называется не иначе как "класс наследник - суть разновидность класса базового". Посему, все то, что верно для базового класса, верно и для наследника, но не наоборот. Т.е. если у тебя есть класс Person, а классы Student, Teacher, Director от него наследует, ты можешь работать с массивом указателей на Person (которые по факту содержат адреса объектов, которые в твоей программе описывают студентов, директоров или учителей), таким образом вызывая функции, которые актуальны для всех классов в твоей программе, которые относятся к человеку вообще. Т.е. ты вызываешь для них функцию "Dance" и они танцуют, кем бы ни были.

Почитай полиморфизм, как советовали выше. И да, моделировать круг, как наследника точки по меньшей мере не корректно. Правило: "класс наследник - суть разновидность класса базового". Едва ли ты можешь утверждать, что круг - разновидность точки. Здесь больше подойдет вложение (агрегация)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Student s("Mishanya");
Teacher t("Klavdia");
Director d("Sofokl");
 
Person* persons[3];
persons[0] = &s;
persons[1] = &t;
persons[2] = &d;
 
for(int i = 0; i < 3; i++)
{
    persons[i]->Dance();
}
 
Текущее время: 00:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru