Из книги "Первый скрытый аргумент конструктора - это указатель this." Теперь, когда мы пишем как
classname object;
Это похоже на создание первой памяти для объекта, а адрес объекта передается конструктору по умолчанию, чтобы он мог инициализировать значения класса.
Если это концепция объекта, как создается память, создается ли она ОС?
Кстати, что это за книга?
Мышление на C++
Это хорошая книга (бесплатно), посмотрите главу 1 «Создание и уничтожение объектов».





Когда объект создается, операционная система создает пространство. При создании объекта операционная система автоматически вызывает конструктор по умолчанию.
На самом деле лучше сказать, что ваш программа выделяет пространство и вызывает конструктор.
Как Джон упомянул в комментариях, в Стандарте нет явной информации о том, как выделяется / управляется память. Однако, если предположить, что никакая оптимизация компилятора не выполняется и вы создаете объект в стеке ... тогда произойдет вероятно.
Данный:
void f()
{
foo x;
}
Компилятор выдаст что-то вроде:
void f()
{
char foo_buffer[sizeof(foo)];
new (&foo_buffer) foo()
reinterpret_cast<foo*>(foo_buffer)->~foo();
}
Пространство для экземпляра foo резервируется в стеке, затем в этом пространстве вызывается конструктор. В конце области вызывается деструктор.
Это зависит от того, где вы пишете свое определение:
new пространство выделяется в куче, и объект размещается там.Обратите внимание, что размещение объектов применяется ко всем конструкторам: единственное значение конструктора по умолчанию состоит в том, что вы не передаете никаких аргументов при создании объекта.
В C++ действует правило «как если бы», что означает, что вы не можете точно сказать, как оно работает. Это «как будто» создается память для объекта, а затем адрес передается конструктору, но невозможно сказать, действительно ли ваша программа работает таким образом. Так что подумайте об этом так, если это поможет, но в действительности все может быть иначе.