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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

Как такое может быть? (вызов функции-члена без объекта) - C++

12.03.2013, 23:39. Просмотров 405. Ответов 3
Метки нет (Все метки)

собственно вопрос озвучен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
class Test
{
  public:
    void print()
    {   
      cout << "This is hack!" << endl;
    }   
};
 
 
int main()
{
  Test *ptr = (Test *) 4;
  ptr->print();
 
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2013, 23:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как такое может быть? (вызов функции-члена без объекта) (C++):

Объявление класса, создание объекта и вызов функции-члена - C++
Всем добрый день! Вот так я объявляю класс. typedef map&lt;string, double&gt; datablock; typedef map&lt;string, string&gt; groupvars; ...

Как такое может быть? - C++
#include &lt;iostream&gt; #include &lt;vector&gt; int main() { const int SIZE = 20; std::vector&lt;int&gt; var(SIZE); int ...

Как такое может быть? - C++
Пишу программку... Начало функции мейн. Не прошло еще ничего кроме файла: int k=1; int l=1; На что компилятор мне выдает, что...

Может ли быть такое? - C++
поставил счетчик для сравнений в пирамидальной сортировке массива выдает 34732 сравнения. Добавлено через 1 час 3 минуты up!

скажите что такое может быть? - C++
у меня Dev-C++ работает всё нормально,но когда компилирую любую программу выходит чёрный экран а на нём данные написаны но кракозяброй...

рекурсивный вызов функции-члена - C++
как осуществить рекурсивный вызов функции члена?

3
ITcrusader
Эксперт С++
177 / 163 / 8
Регистрация: 12.02.2013
Сообщений: 410
12.03.2013, 23:43 #2
Нельзя так делать
0
OhMyGodSoLong
~ Эврика! ~
1245 / 994 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
12.03.2013, 23:50 #3
Потому что на самом деле
C++
1
2
3
4
5
6
7
int main()
{
  Test *ptr = (Test *) 4;
  ptr->print();
 
  return 0;
}
понимается компилятором примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
  Test *ptr = (Test *) 4;
  Test_print(ptr);
 
  return 0;
}
 
void Test_print(Test *this)
{
    std::cout << "This is hack!" << std::endl;
}
this не используется в методе, поэтому-то и всё хорошо.
1
ITcrusader
Эксперт С++
177 / 163 / 8
Регистрация: 12.02.2013
Сообщений: 410
12.03.2013, 23:51 #4
упростим твой код:

C++
1
2
Test *ptr = 0;
  ptr->print();
объект в памяти не нужен для косвенного вызова функций)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2013, 23:51
Привет! Вот еще темы с ответами:

Вызов функции-члена элементов списка - C++
Вот есть список, хранящий указатели (на экземпляры классов). Можно ли в нем реализовать подобную функцию?, вызывая которую, мы будем...

вызов функции члена через std::function - C++
Суть в следующем Задача сделать обертку вызывающую функцию член класса с параметрами. Для этого используется класс: ...

Вызов функции-члена класса по адресу в памяти - C++
Всем хорошего дня :) Допустим, что где-то есть static функция, не принимающая аргументов и ничего не возвращающая. Имея один лишь...

Перегруженный оператор сдвига '<<' не функции-члена класса для объекта ostream - C++
Добрый день. В учебнике попалось на первый взгляд простое задание: #include &lt;iostream&gt; int main() { std::cout &lt;&lt; &quot;Hello,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru