198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
1 | ||||||
Наследование класс1 *test = new класс231.07.2013, 21:47. Показов 3440. Ответов 54
Метки нет (Все метки)
Кликните здесь для просмотра всего текста
Вот небольшая программка, подскажите в чем смысл записи в строчке 58, только не сухое определение записи, что мы создаем объект класса BaseClass и выделяем под него память типа DerivedClass (или как то так), а на пальцах, в чес смысл в чем плюсы и самое главное чем данная строка отличалась бы от записи BaseClass * test = new BaseClass ?
0
|
31.07.2013, 21:47 | |
Ответы с готовыми решениями:
54
Задача на класс2 Nginx перенаправляет на http://site.ru/test.ru или http://test.ru/test.ru C:\Projects\test\test.cpp|6|error: ISO C++ forbids declaration of 'operator++' with no type [-fpermissive]| Функция file_exists(test/01.ogg) работает, если папка test находится в корневом каталоге моего сервера. |
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
01.08.2013, 15:44 [ТС] | 41 |
Тогда вопрос, BaseClass *test = new DerivedClass, если test указывает на объект класса DerivedClass т.е. конечный объект будет объектом класса DerivedClass, то какой смысл в данной записи несет "слово" BaseClass для чего оно тут?
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
01.08.2013, 16:21 [ТС] | 43 |
Жесть конечно с переходом на картинки, но что поделать..
Я все правильно намалевал? опустим тот момент что когда используется virtual, что создается еще одна таблица исключительно с виртуальными функциями Там есть некоторые недомолвки, в частности: class DerivedClass : public BaseClass и print() НЕ virtual функция, show() virtual функция
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
01.08.2013, 16:37 [ТС] | 45 |
Я пытаюсь, но с каждый разом как я что то нащупываю, вы мне выдаете что то новое за место конкретного ответа, верно или нет, что все дальше и дальше уводит от истины.
Когда же начинаешь изучать С++, там же не объясняют сразу как работает ввод и вывод из потока (<< >>) т.к. это сложно, только в конце показывают. т.к. обучение должно идти от простого к сложному, а не только сложно.
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
01.08.2013, 16:40 [ТС] | 47 |
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
01.08.2013, 17:03 [ТС] | 49 | |||||
К сожалению у меня нет много времени на разбирание всего этого, как говорится в процессе разберусь..
Для себя я сделал такой пример, буду им руководствоваться, если он не правильный, то это будет на вашей совести Кликните здесь для просмотра всего текста
Всем принявшим участие в обсуждении данного вопроса спасибо, я для себя подчеркнул много нового и нашел критические ошибки в том, что я думал раньше.
0
|
Неэпический
|
||||||
01.08.2013, 17:36 | 50 | |||||
Добавлено через 31 минуту
1
|
Комп_Оратор)
|
|
01.08.2013, 17:53 | 51 |
Слишком самокритично. Таблицы же опускают без нашего участия.
VLK, лучше не так. В одном классе могут быть методы с одинаковыми именами, но разными типами и/или количеством параметров) и это перегрузка. В классе наследнике могут быть не виртуальные методы полностью совпадающий по сигнатуре объявления с базовым и это переопределение. Вызов зависит от типа указателя. В классе наследнике могут быть виртуальные методы полностью совпадающий по сигнатуре объявления с базовым и это полиморфное наследование. Вызов зависит не от типа указателя, а от того на что он указывает (чем инициализирован или что ему присвоено).
1
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
01.08.2013, 18:08 [ТС] | 52 |
Ну по большому счету, я ведь ни где не допустил в своем последнем примере критических ошибок? как до этого - BaseClass *test = new DerivedClass, test является объектом класса BaseClass
0
|
Комп_Оратор)
|
|
01.08.2013, 18:58 | 54 |
Моя реплика не о том. Когда сталкиваешься с новым понятием, нет другого пути как сначала отнести его к уже известным. Признаки такого обобществления (синтеза) можно назвать доотличительными, а затем выделить (аналитически) те новые отличительные признаки которые определяют новизну этого понятия в полученной группе. В этом случае остается минимум признаков, запоминание которых, облегчается вскрытием их связей между собой. То есть не механически, а и алгоритмически (ассоциативно) запоминается. Запонимается можно бы даже и сказать. Глядя тему, там в начале уже видно, что про указатели их приведение к типу Вы где-то проглядели и вряд ли отличаете такую операцию от приведения к типу других переменных.
А ведь то о чём тут идёт речь, возможно только при косвенном обращении, - по указателю или по ссылке (это предлагаю раскопать самостоятельно, там всё также как и с указателями)). И подытожив, перефразирую одного великого человека: копать, копать и ещё раз копать. Добавлено через 3 минуты Croessmah, да я как раз про это. Тут нужно вернуться назад, пусть и не в С, конечно, но пройти по указателям и ссылкам нормально. Ведь сейчас полиморфное наследование без понимания простого наследования, это тот же стиль и результат будет тот же (имхо).
2
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
02.08.2013, 21:06 [ТС] | 55 |
Указатель, по адресу указателя хранится другой адрес, который ссылается непосредственно на объект (или конкретное значение)
В адресе Two хранится адрес объекта класса BaseClass, правильно? Что бы не рыться, вот такая запись - BaseClass *Two = new DerivedClass; где class DerivedClass : public BaseClass
0
|
02.08.2013, 21:06 | |
02.08.2013, 21:06 | |
Помогаю со студенческими работами здесь
55
Что такое unit test и regression test Запишите в файл test.out все строки из файла test.in, в которых встречается слово "Hello" Почему команда «dir>test.txt» работает, а команда «ftp /?>test.txt» — нет? У себя на локале я пишу ссылку test.php?city=1 и в test.php он видет $city==1 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |