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

О вызове функций классов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ создать и напечатать матрицу http://www.cyberforum.ru/cpp-beginners/thread373348.html
YurA_280784, доброго дня помоги пожалуйста создать матрицу или плдскажи буду благодарен !!! создать и напечатать матрицу С, размером (6*7) найти минимальное по модулю элементы в каждом столце матрицы. Подзадачи создания и печать матрицы оформить в виде процедур а подзадачи определения массива минимальных значений оформить в виде функции.
C++ Глупый вопрос про наследование Вот фрагмент кода, реального: class CListviewParamPrimary : public CListviewParamFloats { private: /** * @brief Возвращает указатель на объект значения параметра */ virtual CParamValue *get_primary_param(void) = 0; virtual const CParamValue *get_primary_param(void) const = 0; http://www.cyberforum.ru/cpp-beginners/thread373344.html
Разница между i++ и ++i.Си C++
Можете объяснить разницу между i++ и ++i на просто примере с цифрами?
Контроль напряжения на портах USB C++
Доброго времени суток. Кто может, подскажите пожалуйста можно ли контролировать количество напряжение что подается на USB порт(вкл, выкл) и если можно то как.
C++ Программа на массивы http://www.cyberforum.ru/cpp-beginners/thread373307.html
Помогите пожалуйста написать правильный код для программы. Уже дня 3-4 пробую ничего не получается путевого. Вообщем. Дан двумерный массив, элементы которого вводятся случайным образом. Нужно заполнить новый одномерный массив из элементов двумерного массива которые встречаются в нем более одного раза. Вот то что я пробовал делать: #include <conio.h>; #include <iostream>; #include <clocale>;...
C++ Ответы на книгу Бьерн Страуструп Программирование - Принципы и практика с помощью C + + Вот хотел есть ли книга с ответами на упражнения в книги Бьерн Страуструп Программирование - Принципы и практика с помощью C + + . Просто что то иногда не получается хочется глянуть как это делается подробнее

Показать сообщение отдельно
Haster
инженер-системотехник
 Аватар для Haster
109 / 108 / 2
Регистрация: 10.03.2009
Сообщений: 533
28.10.2011, 09:52  [ТС]     О вызове функций классов
Mr.X, логика в том, что если бы компилятор использовал адрес объекта при вызове функции, то при изменении указателя не удалось бы вызвать данную функцию.
Ну а выводы элементов остались после модификации примера (раньше там еще были куски кода)

Вообще, спасибо за объяснения!!! )

Добавлено через 13 часов 28 минут
Сыроежка, спасибо за объяснения. Только в данном случае компилятор почему-то не встроил функцию в место вызова (судя по сгенерированному ассемблерному листингу). Интересно, почему?
Assembler
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
_wmain  PROC                        ; COMDAT
 
; 27   : {
 
    push    ebp
    mov ebp, esp
...
; 28   :         A *a = new A();
 
...
 
; 40   :         a->my(0);
 
    push    0
    mov ecx, DWORD PTR _a$[ebp]
    call    ?my@A@@QAEXH@Z              ; A::my
 
; 41   :         cout<<"a->a = "<<a->a<<"\r\n";
 
...
 
; 44   :         return 0;
 
    xor eax, eax
 
; 45   : }
 
CONST   SEGMENT
??_C@_04LMHPCPNB@my?$AN?6?$AA@ DB 'my', 0dH, 0aH, 00H   ; `string'
; Function compile flags: /Odtp /RTCsu /ZI
CONST   ENDS
;   COMDAT ?my@A@@QAEXH@Z
_TEXT   SEGMENT
_this$ = -8                     ; size = 4
_a$ = 8                         ; size = 4
?my@A@@QAEXH@Z PROC                 ; A::my, COMDAT
; _this$ = ecx
 
; 17   :         {
 
    push    ebp
    mov ebp, esp
    sub esp, 204                ; 000000ccH
    push    ebx
    push    esi
    push    edi
    push    ecx
    lea edi, DWORD PTR [ebp-204]
    mov ecx, 51                 ; 00000033H
    mov eax, -858993460             ; ccccccccH
    rep stosd
    pop ecx
    mov DWORD PTR _this$[ebp], ecx
 
; 18   :                 cout<<"my\r\n";
 
...
Т.е. видно, что функция вызывается при помощи команды call
 
Текущее время: 19:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru