Похоже, что Array.flat
недоступно в nodejs (v10).
Ах да, только v11 + - см. Таблицу совместимости: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
Я думаю, что идея здесь состоит в том, что QT имеет свою собственную внутреннюю ссылку, рассчитывающую на большинство объектов и если Вы раздаете их, копия на записи использования и т.д.
Вы могли быть более конкретными в своем вопросе?
В Вашем примере выход не должен быть выделенной "кучей".
Этот код компилирует и выполняется прекрасный:
struct MyWidget : QWidget
{
QPushButton quit;
MyWidget()
{
quit.setGeometry( 62, 40, 75, 30 );
quit.setFont( QFont( "Times", 18, QFont::Bold ) );
}
};
Если я понимаю то, что Вы спрашиваете правильно, я думаю, что это главным образом сводится к традиции и примеру с определенной добавленной зависимостью заголовка.
Альтернатива, конечно, должна объявить quit
как членская переменная MyWidget
. Если бы Вы делаете это, то необходимо было бы включать заголовочный файл для QPushButton
где MyWidget
объявляется, вместо в файле реализации. Пример, который Вы дали также, полагается на родительские отношения QObject
s, чтобы отслеживать память для кнопки и удалить его на разрушении, таким образом, это не должно быть указано как участник в классе.
Я вполне уверен, Вы могли измениться на выделение стека, если бы Вы действительно хотели.
Что другие опции там? От стека? Как спокойный знал бы, когда выделить от стека и когда от "кучи"? Вещи, выделенные от стека, закончатся, как только текущая функция возвращается, таким образом, время жизни объекта могло быть намного короче, чем время использования. Предположите добавлять узел к дереву. Узел будет использоваться еще долго после того, как текущая функция возвратилась. Это привело бы к доступу к случайной памяти, отказам сегментации, дампам ядра, и т.д.