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

Полиморфизм :( - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Классы. http://www.cyberforum.ru/cpp-beginners/thread84031.html
Класс футбольная команда Класс имеет 3 поля Одно поле символьное (название команды) И еще 2 поля числовые (количество игроков и количество игр) 2 метода: 1)Метод инициализации полей; 2)вывод на экран значения полей Создать два объекта класса , инициализировать и вывести на экран Решите, пожалуйста. borland c++
C++ В квадратной матрице заменить элементы главной и побочной диагонали на минимальный элемент задача такая:в квадратной матрице заменить элементы главной и побочной диагонали на минимальный элемент найденый среди элементов находящихся ниже главной диагонали. т.е. допустим матрица 5х5: 2 3 5 6 5 8 3 5 7 1 3 4 8 7 3 4 5 1 8 9 3 5 7 5 6 тогда: 1 3 5 6 1 8 1 5 1 1 http://www.cyberforum.ru/cpp-beginners/thread84026.html
Возведение в степень C++
Подскажите оператор для возведения числа в n-ую степень. Зарание спасиба
C++ Матрица ( тока начинаю програмировать)
вот задача : В исходном текстовом файле «In.txt» посчитать количество строк, которые начинаются и заканчиваются на одну и ту же букву. В результирующий файл «Out.txt» записать строку вида «В исходном файле ___ строк, удовлетворяющих заданному условию», если количество найденных строк больше нуля или «В исходном файле нет искомых строк» в противном случае. Если исходного файла не существует,...
C++ Структуры и файлы http://www.cyberforum.ru/cpp-beginners/thread83999.html
Ребята, спасите!!! Используя структурный тип данных, создать базу данных и организовать с ней работу, включая поиск нужной информации, ее корректировку (изменение значений полей структур, дозапись информации в файл или ее удаление), вывод информации на экран. Программа должна содержать меню, позволяющее работать с базой данных. Задание: Сохранить сведения об учениках школы: фамилия,...
C++ Работа с файлами!!! помогите решить этот бред, а то с инста попрут 1)описать функцию triangle, формирующую текстовой файл из 9 строк, в первой из которых-один символ `1`, во второй-два символа `2`, ..., в девятой-девять символов `9`. 2)дан некоторый файл, компонентами которого являются структуры типа: день,месец,год. описать функцию, проверяющую по сегодняшней дате (введенной с клавиатуры), какая из дат в... подробнее

Показать сообщение отдельно
Vladd
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 11
09.01.2010, 20:22     Полиморфизм :(
Всем здравствуйте. Ребят помогите пожалуйста с полиморфизмом. Я читал некоторые статьи и чем больше их читаю, тем больше возникает вопросов..

А вот сами вопросы, которые возникли при изучении полиморфизма:
1. Прочитал несколько статей на форуме, почитал маны различные и всё равно непонятно когда появляется полиморфизм.. Кто-то говорит, что когда происходит наследование и имя ф-ии в производном классе такое же как и в базовом, а кто-то что когда перед методом стоит virtual. Хотя вопрос мой может быть некорректен. Вроде бы virtual просто используется для позднего связывания. Но тем не менее вопрос остаётся в силе

2. Мне непонятна конструкция создания указателя.. Например Base *ptr = new Child; Я как-то привык к таким записям: int *ptr = new int; или double *ptr = new double[n]; но когда разные слова стоят, тогда неопределённость как у собаки Павлова, которой однажды не дали еду при загорании лампочки О чём говорит эта конструкция? И если так можно писать, то чем указатели различаются между собой, например чем отличается указатель на объект типа Base и объект типа Child? Разве у них не разные размеры? И вообще зачем так писать?

3. Есть классы А, АБ, АБЦ:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class A
{
public:
  virtual int Fun1(int key);
  virtual int Fun2(int key);
};
 
int A::Fun2(int key)
{
  cout << " Fun2( " << key << " ) from A " << endl;
  return 0;
}
 
class AB: public A
{
public:
  int Fun1(int key);
  int Fun2(int key);
};
 
int AB::Fun2(int key)
{
  cout << " Fun2( " << key << " ) from AB " << endl;
  return 0;
}
 
class ABC: public AB
{
public:
  int Fun1(int key);
};
 
int ABC::Fun1(int key)
{
  cout << " Fun1( " << key << " ) from ABC " << endl;
  return 0;
}
Что будет в таблице виртуальных ф-ий класса А, АБ, АБЦ? Какие вообще будут ф-ии в этих классах? Т.е. у нас же есть вирутальные и невиртуальные ф-ии и когда мы применяем наследование, то в производном классе будут такие же ф-ии что и в базовом, но это если случай с невиртуальными ф-ми, а вот если виртуальные, то создаётся таблица, в которую заносятся адреса этих ф-ий.. По какому правилу эти ф-ии заносятся в таблицу? Я ваще ничего не понимаю

4. Как работают виртуальные деструкторы? Точнее как работают обычные деструкторы при наследовании? Мы к примеру удаляем объект какого-то производного класса Child и при удаленни сначало вызовется деструктор ~Child(), а потом автоматически деструктор ~Base()? Если так, то понятно зачем нужны вирт деструкторы

5. Вопрос наверное не в тему, но что такое повышающее приведение типов? В гугле я нашёл что-то подобное:
Base base;
Child child;
base = child;
Но не понял в чём смысл... И где это можно использовать?

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