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

Что такое порядок инициализации таблицы виртуальных методов? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа со строками (удаление из строки указанного символа) http://www.cyberforum.ru/cpp-beginners/thread804268.html
Недавно начал изучать С++ в универе. Задали написать программу реализующую удаление из строки указанного символа. Программа компилируется, но правильно работать отказывается. Где я накосячил? #include <iostream> #include <string.h> using namespace std; // объект - стока символов // реализовать: удаление из стоки определенного символа
C++ File Ripper Всем привет. Заинтересовала тема для поиска файлов внутри файла. В данном случае интересует поиск только MPEG Layer 3 (т.е. mp3). Как его искать - без понятия. Нужна программа типа HyperRipper или MultiExtractor. P.S. Как я понял, mp3 нужно искать по фреймам, но как правильно - хз.. Выручайте :( http://www.cyberforum.ru/cpp-beginners/thread804267.html
C++ Работа с бинарными файлами (программка дважды записывает последнее число)
Добрый день, помогите пожалуйста с такой ситуацией: написал програмку для заполнения бинарного файла рандомными числами (их количество вводится в начале программы): #include <iostream> #include <fstream> #include <time.h> using namespace std; void random(int N){ ofstream file("resource.bin", ios::binary|ios::out); srand(time(NULL));
Цикл с предусловием C++
#include <iostream> int main() { int s = 0; for (int i = 0; i <= 8; i++) { for (int j = 0; j <= 6; j++) { for (int k = 0; k <= 4; k++) { if (3 * i + 4 * j + 6 * k == 24) { std::cout << "3: " << i << " 4: " << j << " 6: " << k << std::endl; s++;
C++ Списки. Стеки. Очереди http://www.cyberforum.ru/cpp-beginners/thread804255.html
Квадрат разбит на {4}^{k} равновеликих квадратных клеток. Квадрат перегибается поочередно относительно вертикальной (правая половина подкладывается под левую) и горизонтальной (нижняя половина подкладывается под верхнюю) оси симметрии до тех пор, пока все клетки не будут расположены друг под другом. Требуется занумеровать клетки исходного квадрата таким образом, чтобы в результате выполнения...
C++ MPI и scanf в С++ Вобщем я делаю параллельную программу. Все процессы в этой программе должны узнать некоторое целое число X, которое пользователь вводит с клавиатуры. Я пока знаю только один способ это осуществить - некоторый один процесс (например с рангом 0) получает это число с помощью scanf у пользователя, а затем шлет его в сообщениях всем остальным процессам (см. код ниже). Вопрос - можно ли как-то... подробнее

Показать сообщение отдельно
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
10.03.2013, 10:31     Что такое порядок инициализации таблицы виртуальных методов?
Цитата Сообщение от Kastaneda Посмотреть сообщение
то сначала инициализируется VPTR указателем на таблицу для базового класса, потом, до входа в тело конструктора наследника,
согласно дизасемблированию сам конструктор этим занимается
например
Assembler
1
2
3
4
5
6
7
8
9
    66h             ; nIDTemplate
call    ??0CDialog@@QAE@IPAVCWnd@@@Z ; CDialog::CDialog(uint,CWnd *)вызов конструктора родителя
 
mov     ecx, ebx        ; this
mov     dword ptr [esi], offset ??_7CBulkLoopDlg@@6B@ ; const CBulkLoopDlg::`vftable' записываем адрес таблицы виртуальных функций
 
;пошло конструирование
call    ??0CWnd@@QAE@XZ ; CWnd::CWnd(void)
...............
 
Текущее время: 12:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru