Cтоит ли после изучения Си++ изучить Си07.03.2015, 19:44. Показов 8037. Ответов 95
Метки нет (Все метки)
Подскажите, стоит ли после изучения Си++ изучить Си? Ведь в Си++ поддерживаются все сишные команды (например, alloc, realloc и т.д.) Но в учебниках по Си++ о них ни слова.
1
|
|
| 07.03.2015, 19:44 | |
|
Ответы с готовыми решениями:
95
У меня есть литература для изучения delphi 7. Могу ли я по ней изучить delphi 2010? Какие книги лучше всего изучить чтобы хорошо изучить с++ Что изучить после Паскаля? |
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|||||||
| 07.03.2015, 21:46 | |||||||
0
|
|||||||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||
| 07.03.2015, 21:48 | ||
|
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 07.03.2015, 21:52 | |
|
0
|
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
|||
| 07.03.2015, 21:53 | |||
![]() malloc не вызывает конструктор, о чем я сразу написал,конструктор не вызывается не создается объект, следовательно malloc не создает объект круг замкнулся
0
|
|||
| 07.03.2015, 21:54 | |
|
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 07.03.2015, 21:55 | ||
|
1
|
||
|
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
|
|
| 07.03.2015, 21:58 | |
|
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 07.03.2015, 21:59 | ||
Он при чем к иницализации объекта. Коль скоро vptr иницализируется конструктором, то код rikimaru2013 падает при попытке виртуального вызова.
0
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
||
| 07.03.2015, 22:02 | ||
|
следовательно должна быть таблица,даже если одна функция таблица инициализируется при вызове конструктора при malloc нет вызова конструктора, таблица указывает в космос, при вызове метода(виртуального) прога падает ибо элементы таблицы указывают "в никуда" ты же в своей проге (пост 33) убрал волшебное слово virtual, что и изменило поведение
0
|
||
|
|
||
| 07.03.2015, 22:06 | ||
|
Короче ещё раз для страждущих http://www.cplusplus.com/reference/new/ operator%20new/ (пробел перед operator т.к форум коробит ссылку).
Добавлено через 3 минуты ValeryS, ну так табличу виртуальных методов линкер делает встречая virtual а не new если уже пошла такая пьянка что разбираем каждое слово. Когда нет виртуального наследования имеем простую матрёшку C : B : A{} ~= C{ B{ A } } - т.е имеем по сути несколько объектов с их константным размером который обеспечивает при выделении маллок либо нью, когда используем виртуальный механизм, то компилятор создаёт таблицу виртуальных методов и на этапе связывания уже находит нужный метод конкретно из контекста кода(обычно виртуальный метод во внешнем классе), теперь мне "убогому" пусть кто то объяснит каким чёртом выделение памяти соотносится к механизму виртуального наследования?Мы начали за здравие а заканчиваем за упокой.
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 07.03.2015, 22:09 | ||
|
Этот указатель есть в каждом объекте, где есть виртуальные методы, и этот указатель должен иметь валидное значение. Это значение задает конструктор. Собственно об этом тут и речь. А не про выделение памяти как таковое.
0
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
||||||||
| 07.03.2015, 22:12 | ||||||||
|
а присваивает то адрес этой таблички во время выполнения конструктор, а при malloc конструктор не вызывается при встрече слова virtual в класс добавляется еще одно поле, указатель на таблицу но я чаше всего встречал типа такого
пишу по памяти могу ошибаться
0
|
||||||||
|
|
|
| 07.03.2015, 22:15 | |
|
new непосредственно не относится к виртуальному наследованию есть несколько форм new которые в синтаксисе имеют одинаковую форму ключевого слова new - предназначение new активировать выделение памяти, в зависимости от перегрузки new запускает либо обычный malloc либо создаётся объект посредством перегруженной формы placement_new, ключевое слово virtual сообщает компилятору о полиморфности объекта и о том что при создании объекта к нему надо прицепить таблицу виртуальных методов. Как то так простыми словами. Что из сказанного мной выше идёт в разрез со сказанным?Да создание объекта + virtual активирует механизм виртуального наследования, но не new за это отвечает.
0
|
|
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 07.03.2015, 22:17 | |
|
Знание других языков всегда полезно, знание си для плюсов полезно в квадрате. Надо понимать как всё работает под капотом чтобы лучше пользоваться вещами. Можно понять что понудило спроектировать некоторые вещи именно подобным образом.
1
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 07.03.2015, 22:20 | ||
|
-=ЮрА=-, кроме того, что ты решил, что тут обсуждается выделение памяти, ничего.
Тут, начиная с примера rikimaru2013, обсуждалось не выделение памяти, а инициализация (объекта), которую проводит new-expression и не проводит malloc. Наследование, виртуальные функции - все это уже вторично. Добавлено через 1 минуту
0
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
|||||||||||
| 07.03.2015, 22:21 | |||||||||||
|
вот кусок реальной дизасемблированой проги
конструктор
0
|
|||||||||||
|
|
||||
| 07.03.2015, 22:26 | ||||
|
0
|
||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 07.03.2015, 22:28 | ||
|
2
|
||
| 07.03.2015, 22:28 | |
|
Куда идти после изучения ЯПа? Что выбрать после изучения MYSQL?
Что изучать после изучения основ языка В каком направлении развиваться после изучения основ С++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|