Я только что начал работать с C++, не работая с ним долгое время. В то время как большая часть из него имеет смысл, существуют некоторые биты, что я нахожу немного confuddling. Например, мог кто-то объяснять, что делает эта строка:
typedef bool (OptionManager::* OptionHandler)(const ABString& value);
Он определяет тип OptionHandler
как указатель на функцию-член класса OptionManager
, и где эта функция-член принимает параметр типа const ABString&
и возвращает bool
.
typedef bool (OptionManager::* OptionHandler)(const ABString& value);
Начнем с:
OptionManager::* OptionHandler
Здесь говорится, что :: * OptionHandler
является функцией-членом класса OptionManager
.
*
перед OptionHandler
говорит, что это указатель; это означает, что OptionHandler
является указателем на функцию-член класса OptionManager
.
(const ABString & value)
говорит, что функция-член примет значение типа ABString
в константную ссылку.
bool
говорит, что функция-член вернет логический тип.
typedef
говорит, что с помощью «* OptionHandler» вы можете создать множество указателей на функции, которые могут хранить этот адрес этой функции. Например:
OptionHandler fp[3];
fp [0], fp [1], fp [2]
будут хранить адреса функций, семантика которых совпадает с приведенным выше объяснением.
this - указатель на функцию-член OptionManager, которая принимает const ABString refrence и возвращает bool
Это определение типа указателя на функцию-член. См. FAQ по C ++ .