Я изучаю указатели на методы класса C ++, и я пересек этот пример:
class A
{
public:
A();
void sample() { ...method_stuff... }
void (A::*ptrToSample);
};
A::A()
{
ptrToSample = &A::sample;
}
Теперь, если я правильно понял, sample не является stati c, что означает, что я не могу вызвать его без объекта A , точнее, если я не создаю объект A , а также все его неустановленные c методы и члены также не сохраняются в памяти. Сказав это, я запутался в конструкторе объектов, представленном в примере. Разве любой объект A не должен иметь копию sample ? Если да, то почему я должен использовать оператор & в области видимости вместо оператора this ?
Разве конструктор не должен выглядеть примерно так:
{
ptrToSample = &(this->sample);
}
?
Поскольку метод не виртуальный, его не следует сохранять в таблице виртуальных методов (верно?), тогда где, черт возьми, он хранится? Что мне не хватает?
Спасибо за помощь!