7 / 7 / 8
Регистрация: 19.06.2016
Сообщений: 134
|
||||||||||||||||
1 | ||||||||||||||||
Под капотом вызова функции28.02.2019, 12:50. Показов 2804. Ответов 8
Решил разобраться как вызываются функции в c++. То есть как компилятор преобразовывает код в машинный код.
С обычным вызовом функций разобрался, но вот с виртуальными нет. Ниже представлен код на c++ и его аналог на ассемблере после компиляции gcc: Код C++:
0
|
28.02.2019, 12:50 | |
Ответы с готовыми решениями:
8
А что под капотом у vector? Что под капотом std::mutex оформить решение в виде функции следующими способами: 1. функция расположена после ее вызова; 2. функция расположена после до ее вызова; 3. функ Выделение памяти с помощью new под объекты без вызова их конструкторов |
Мозгоправ
|
||||||
28.02.2019, 13:45 | 2 | |||||
Сообщение было отмечено DARKPALADIN как решение
Решение
Видимо это как раз поиск адреса виртуального метода.
1
|
7 / 7 / 8
Регистрация: 19.06.2016
Сообщений: 134
|
|||||||||||
28.02.2019, 14:13 [ТС] | 3 | ||||||||||
L0M, Да вы правы. Такой код:
0
|
28.02.2019, 14:32 | 4 |
https://en.wikipedia.org/wiki/Virtual_method_table
Только учти, что это в Стандарте не прописано, хотя большинство компиляторов именно так и делает.
1
|
7 / 7 / 8
Регистрация: 19.06.2016
Сообщений: 134
|
|
28.02.2019, 16:16 [ТС] | 6 |
0
|
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
|
|
28.02.2019, 16:44 | 7 |
1
|
7 / 7 / 8
Регистрация: 19.06.2016
Сообщений: 134
|
|
28.02.2019, 16:46 [ТС] | 8 |
0
|
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
|
|
28.02.2019, 16:47 | 9 |
ну да
0
|
28.02.2019, 16:47 | |
28.02.2019, 16:47 | |
Помогаю со студенческими работами здесь
9
Выделение памяти под массив объектов без вызова конструктора Вызова функции Абстракция вызова функции Многоточие после вызова функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |