Форум программистов, компьютерный форум, киберфорум
Наши страницы

[C++] Взятие адреса конструктора. Физическое время существование объекта. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как узнать, какой функции какой файл *.a соответсвует? http://www.cyberforum.ru/cpp/thread446938.html
Друзья! Работаю с mingw, вот там надо так: если, допустим, вызываешь API- функцию, то надо подключать соответствующую библиотеку (?), делается это ключом линкёра примерно так: -lwww файл Эта...
C++ Про деструктор и утечку памяти Доброе время суток. Вот что дано: #include <string> #include <vector> class Symbols { protected: void add(std::string str); // добавления символа virtual void inputData() = 0; //... http://www.cyberforum.ru/cpp/thread446749.html
Создать exe, запускающий exe C++
Говорю сразу: я ничего не смыслю в програмировании; зачем подался на такой форум? Надеюсь получить ответ на свой вопрос,упавая на то, что его реализация не такая сложная. У меня возникла...
Странное поведение bool C++
Помогал отлаживать код и мы наткнулись на удивительное. Кодер скрыл отображение варнингов в VS2010. Метод М1 не всегда возвращал значение типа bool. И потому в методе М2, вызывающем метод М1,...
C++ Как средствами BC 3,1 запросить свободное место на указанном жёстком диске? http://www.cyberforum.ru/cpp/thread444851.html
Извиняюсь, если создал лишнюю тему, но ничего по своей проблемке я вроде не заметил. Если что-то есть, поправьте. А вопрос в следующем: как средствами BC 3,1 запросить свободное место на указанном...
C++ Указания адреса функции Есть библиотека. Нужно чтобы функция в моей библиотеке указывала на функцию в чужой. Вот мой код: typedef int (WINAPI WJMP)(); extern "C" __declspec(dllexport) WJMP Test(void); *Test=... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18673 / 6636 / 468
Регистрация: 30.03.2009
Сообщений: 18,585
Записей в блоге: 29
17.02.2012, 14:14
Цитата Сообщение от AzaKendler Посмотреть сообщение
про читерский метод мне подумалось что как ни крути а придется собрать бинарный файл и посмотреть таки дамп
Можно вообще ничего не смотреть. А исходить лишь из того, что мы знаем, как компилятор отманглирует имя конструктора

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
 
class A
{
    int a;
  public:
    A (int);
};
 
A::A (int x) : a(55555555 + x)
{
}
 
struct s
{
  int x;
};
 
/* Вот под таким именем будет в коде конструктор. На этапе разбора
 * конструкций языка, компилятор ещё не будет знать, что эта функция
 * на самом деле есть конструктор. Этот факт выяснится только на этапе
 * построения кода, когда вся языковые конструкции уже разобраны
 * и компилятор работает только с промежуточным представлением,
 * абстрагируясь от конкретного языка программирования */
extern "C" void _ZN1AC1Ei (struct s*, int);
 
int main (void)
{
  struct s str;
  str.x = 0;
 
  _ZN1AC1Ei (&str, 1);
 
  printf ("str.x=%d\n", str.x);
 
  return 0;
}
Цитата Сообщение от AzaKendler Посмотреть сообщение
выходит мы имеем просто функцию, которая лежит себе в сегменте кода, имеет определенный прототип и ей абсолютно все равно кого
инициализировать лишь бы подходил под прототип. так?
По сути да, но ограничение лишь бы подходило под прототип с точки зрения машинного кода лишнее. Можно вызвать и с другим прототипом. Но оно из-за этого может сломаться на исполнении (а может и не сломаться)

Цитата Сообщение от AzaKendler Посмотреть сообщение
и то это если функция "сложная" и компиллятор не решит обойтись вообще без нее.
Ворпроса не понял
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.