Вызов метода через указатель на метод



В прошлых постах тут и тут мы поговорили о том, как можно вызвать публичный метод класса, используя указатель на функцию.

Я обещал упомянуть еще один способ вызова метода через указатель. Более элегантный, но менее хардкорный.



И его на самом деле уже проспойлерил Александр, причем сразу же во время публикации первого поста из серии. Все-таки в нашем канале сидят крутые спецы)



Суть в том, что есть специальный синтаксис для определения именно что указателя на метод. Делается это так:



using fnptr = void (RandomType::*)();



В этом объявлении синонима явно указывается, что это указатель на метод конкретного класса RandomType. И вызывается конкретный экземпляр этого метода через объект и оператор точка. И все. Никаких танцев с бабнами и прочих шалостей. В общем, все можете посмотреть в коде на картинке.



Почему я думаю, что метод менее хардкорный? Потому что здесь указатель подразумевается именно как указатель на метод и вызывается он похожим образом. В прошлых постах я хотел показать, что под капотом зашито и что на самом деле представляют из себя методы классов.



Stay versatile. Stay cool.



#fun #cppcore