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

Принудительный вызов метода родителя - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объясните пожалуйста, в чем здесь дело(структура и указатель) http://www.cyberforum.ru/cpp-beginners/thread1492715.html
#include <iostream> #include <string> #include <windows.h> using namespace std; struct pizza { double diameter; string name; double weight;
C++ Сделать массив расширяемым Никак не получается сделать динамический массив расширяемым , помогите пожалуйста, где,что не так? #include<iostream> using namespace std; class myVector { int *arr, size,var,count; public: myVector(int s=5):var(0), size(s), count(0) { http://www.cyberforum.ru/cpp-beginners/thread1492661.html
C++ Работа с сайтами
Где найти информацию о том как взаимодействовать с сайтами(например вставить в поле логин - логин и т.д.).Работаю на Visual c++,MFC.Об CGI тоже пока не нашел понятной статьи.
Задача на Базу данных о продаже автомобилей C++
Помогите написать программу на поставленную задачу. Как мне сказали: программа должна получиться где-то 30-59 строчек кода. Вот само задание: Дан файл записей о продаже авто по след. структуре: Менеджер,марка Кол-во число строк в тексте заранее не известно. В другом файле в ед.строке вводится фамилия менеджера. Необходимо в 3-ем фале записать все продажи данного менеджера отсортированного...
C++ Вызов оконной функции в диалоговом окне http://www.cyberforum.ru/cpp-beginners/thread1492643.html
есть Добавлено через 7 минут есть программа с диалоговым окном и программа с оконной функцией, надо чтобы при нажатии кнопки в диалоговом окне выполнялась программа с оконной функцией, разное пробовал, но все безуспешно, может кто что посоветовать по этой проблеме?
C++ Рекурсивная функция выводящая содержимое вектора Никаких идей как это сделать. В книге всего пол страницы посвящены этой теме. подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
04.07.2015, 07:01     Принудительный вызов метода родителя
1. Да - вызовы f() и this->A::f() реализованы по-разному. Вот асм выхлоп
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
; вызов через VPTR
    movq    -8(%rbp), %rax ; получаем адрес объекта
    movq    (%rax), %rax ; получаем адрес таблицы вирт. ф-ций
    movq    (%rax), %rax ; получаем адрес ф-ции f()
    movq    -8(%rbp), %rdx
    movq    %rdx, %rdi
    call    *%rax ; вызываем f()
 
; а это простой вызов
    movq    -8(%rbp), %rax ; получили адрес объекта
    movq    %rax, %rdi 
    call    _ZN1A1fEv ; и напрямую вызываем A::f
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
// Следовательно - верно ли утверждение, что при явном указании класса от которого нужно вызввать виртуальный
* * * * // метод, вызов метода через виртуальную таблицу функций не используется.
да

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