Конструктор по умолчанию с ++ constexpr или правильно undefined?

Лучше объявить конструктор по умолчанию, который:

  • Назначает значения по умолчанию для данных элемента и объявляется constexpr, или
  • оставляет все данные участников неопределенными?

Я думаю в основном в контексте контейнеров STL, например, векторы сильно используют конструкторы по умолчанию, так какой способ более эффективен?

# c++11 constexpr default-constructor
Источник
  • 2
    нулевой конструктор ?? Вы имеете в виду конструктор по умолчанию?
  • 0
    Да, вы можете называть это так, если хотите. В наши дни `Default 'перегружен, я предпочитаю ссылаться на конструктор, который не принимает никаких аргументов, как на нулевой конструктор.
  • 3
    Мне нравится, как вы это формулируете, как будто щедро позволяя нам использовать правильную терминологию, которая будет понятна другим программистам.
  • 1
Codelisting
за 0 против

Как и все в C ++, это зависит от обстоятельств.

Вы намереваетесь создать большие буферы для этого, и оба нуждаются в оптимизации, чтобы не очищать память, и не желают прикладывать усилия для выделения нераспределенной памяти самостоятельно?

Или вы хотите, чтобы ваши программы чаще исправлялись?

Таким образом, по умолчанию ваши данные члена и constexpr ваш конструктор. Существуют способы, которые включают несколько обручей, в которых вы можете объявить буфер неинициализированной памяти, достаточно большой для хранения N копий вашего класса и инициализировать данные позже. (Это правда, что не существует стандартного переносимого способа реализацииstd::vector вы сами, но это дефект стандарта, который не очень скоро повлияет на вас в реальной жизни.)

  • 0
    Я думаю, что придерживаюсь прежнего мировоззрения, хотя и надеялся, что в общем случае будет ответ. Хммм, думаю, я не могу ожидать более четкого ответа, чем этот, спасибо.
Codelisting
Популярные категории
На заметку программисту