Цель общедоступного метода, который вызывает только частную чисто виртуальную функциюC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Цель общедоступного метода, который вызывает только частную чисто виртуальную функцию

Сообщение Anonymous »

Читая о возможностях библиотеки C++17, я обнаружил общедоступные методы, которые просто вызывают частные чисто виртуальные методы. Например:

std::pmr::memory_resource::allocate

Код: Выделить всё

void* allocate( std::size_t bytes, std::size_t alignment = alignof(std::max_align_t) );
Выделяет хранилище размером не менее байтов, выровненное по указанному выравниванию.
Эквивалентно возврату do_allocate(байты, выравнивание);


std::pmr:: Memory_resource::do_allocate

Код: Выделить всё

virtual void* do_allocate( std::size_t bytes, std::size_t alignment ) = 0;
и

std::basic_streambuf< CharT,Traits>::pubsync, std::basic_streambuf::sync

(1) int pubsync() ;
защищено:
(2) виртуальная синхронизация int();
  • Вызывает sync() самого производного класса
почему используется такой шаблон?
Я читал В чем смысл частной чистой виртуальной функции? и несколько статей об идиоме NVI, но ничто не объясняет приведенные выше случаи, когда метод ничего не делает, а вызывает частный метод и не имеет перегруженных методов.

Подробнее здесь: https://stackoverflow.com/questions/787 ... l-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»