Удалённая виртуальная функция
От: _NN_ www.nemerleweb.com
Дата: 22.08.19 18:49
Оценка:
Приходилось ли кому-нибудь использовать это чудо ?
Интересно узнать для чего это может пригодиться.

class A
{
public:
    virtual void f() = delete;
};
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Удалённая виртуальная функция
От: Conr Россия  
Дата: 23.08.19 10:20
Оценка: 14 (2)
Здравствуйте, _NN_, Вы писали:

_NN>Интересно узнать для чего это может пригодиться.

Первое, что пришло в голову: эмуляция vtable, точнее COM Layout.
Попробовал. Действительно, MSVC для таких функций создает vtable entry как __purecall.

Удобно, если нужно прикинуться неизвестным COM-like объектом, у которого разреверсил 1-2 нужных метода, а для остальных требуются заглушки.
http://files.rsdn.org/8859/82254.gif
Re: Удалённая виртуальная функция
От: rg45 СССР  
Дата: 23.08.19 13:12
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Приходилось ли кому-нибудь использовать это чудо ?

_NN>Интересно узнать для чего это может пригодиться.

Например для того, чтоб исключить появление вопросов о необходимости ее вызова из производных классов.
--
http://static.skaip.su/img/emoticons/v2/ffffff/headbang.gif
Re[2]: Удалённая виртуальная функция
От: _NN_ www.nemerleweb.com
Дата: 23.08.19 14:51
Оценка:
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, _NN_, Вы писали:


_NN>>Приходилось ли кому-нибудь использовать это чудо ?

_NN>>Интересно узнать для чего это может пригодиться.

R>Например для того, чтоб исключить появление вопросов о необходимости ее вызова из производных классов.


А можно пример ?
Как бы этот код не компилируется
struct A
{
 virtual void f() {}
};

struct B : A
{
 virtual void f() = delete;
};
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.