Выделение памяти в стеке через «Аргумент шаблона значения» против обычного массива - PullRequest
0 голосов
/ 02 июля 2019

Я изучаю Обзор C ++ и одна из демонстраций для Значение шаблона Аргумент заключается в создании класса шаблона для произвольного размещения Buffer в стек. Я не вижу, как это отличается от простого создания массива (то есть int buf [100]), который также будет выделен из стека?

Значения аргументов полезны во многих контекстах. Например, Buffer позволяет нам создавать буферы произвольного размера без использования свободных хранилище (динамическая память):

Buffer<char,1024> glob;  // global buffer of characters (statically allocated)

void fct()
{
     Buffer<int,10> buf; // local buffer of integers (on the stack)
     // ...
}

1 Ответ

4 голосов
/ 02 июля 2019

Скорее всего, шаблонный класс Buffer похож на то, что предоставляется std :: array .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...