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

Указатели на функцию, операции .* и ->* - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Покер - даны 5 целых чисел. Определить в них комбинации повторяющихся элементов http://www.cyberforum.ru/cpp-beginners/thread432180.html
есть массив. надо определить в нем комбинации повторяющихся элементов: for(int i=0; i<5;i++) { k=count(tmpmass,tmpmass+5,tmpmass); } if(k==2) cout<<"One Pair"<<endl; if(k==3)...
C++ Найти сумму парных элементов массива Создать массив из 10 целых чисел. Найти сумму парных элементов массива (что делятся на 2). Помогите пожалуйста((( http://www.cyberforum.ru/cpp-beginners/thread432167.html
C++ Народ нужно обьяснить значение
1)void new_str(char s1, char s2, char s3, int N)-что делает и что обозначает эта строка???И что в этой строке обозначает new_str???? 2)void print_str(char s)-что делает и что обозначает эта...
C++ Функция разбиения строки в части [C++]
Всем доброго времени суток. Нужно написать условие, который разделит (через точки) строку line на lname, fname, mname Например: Enter lname, fname, mname of poet, separated by points:...
C++ Дано натуральное число N. Вычислить http://www.cyberforum.ru/cpp-beginners/thread432151.html
Дано натуральное число N. Вычислить S=1/3^2+1/5^2+1/7^2+...+1/(2n+1)^2
C++ Дано натуральное число N. Вычеслить Дано натуральное число N. Вычеслить: 2/1+3/2+4/3+...+n+1/n подробнее

Показать сообщение отдельно
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
20.01.2012, 23:29
вот чуть подробнее:
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
38
39
40
#include <iostream>
 
using namespace std;
 
class A
{
public:
  void f()
  {
    cout <<"hello";
  }
 
  void ExtCall(A* pa, void(A::*pf)())  // что делает эта функция?
  {
    // В функцию передали указатель на объект типа A и указатель
    // на метод этого объекта (pf - имя этого указателя. так же как pa - имя указателя на A). метод имеет сигнатуру
    // void (), т.е. это метод класса A, который не принимает
    // аргументы и возвращает void, т.е. ничего не возвращает.
    //(pa->*pf) - разыменовывание указателя на метод. (pa - указатель на объект типа A)
    //(ra.*pf) - разыменовывание указателя на метод. (ra - ссылка на объекта типа A)
    // скобочки после разыменовывание - это вызов этого метода.
    (pa->*pf)();
  }
 
  // см каментарии выше
  void Call(void(A::*pf)())
  {
    (*this.*pf)();
  }
};
 
void main()
{
  A a;
  // Объявление переменной с именем pf которая имеет тип указателя на метод класса A,
  // Который ничего не принимает и ничего не возвращает.
  void (A::*pf)() = &A::f;
  ExtCall(&a, pf);
  a.Call(pf);
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru