почему мне нужно использовать & оператор, чтобы взять адрес, который можно игнорировать, если бы он был статической функцией
Вы правы, в случае указателя на синтаксис функции-членав идеале &
можно опустить.Я думаю, что &
синтаксис существует может быть из-за исторического соглашения.
Я слышал, что указатель на членов на самом деле не является указателем, Может кто-то прояснить это?
Это не правильно.Разница лишь в том, что они являются указателями на функцию-член.Поскольку нестатический элемент class
содержит в качестве аргумента неявный указатель this
, они имеют специальную подпись.Кроме того, они не могут быть преобразованы в обычный указатель на функцию с такой же сигнатурой.
В вашем примере кода теоретически p
указывает на:
int MyStruct::foo (MyStruct* const);