Что это такое? Может ли кто-нибудь привести пример? Решение через указатель не подходит.
Формально, язык С++ вообще не предоставляет вам средств для явного вызова конструктора. Вызов конструктора - это всегда побочный эффект процесса инициализации. Вы, как пользователь, можете лишь инициировать процесс инициализации. Это процесс будет проходить по довольно разветвленной системе правил. И в каких-то ветках этой системы правил он может вылиться в вызов конструктора. А может и не вылиться. Управлять этим вы можете лишь косвенно - предоставляя в своем классе те или иные конструкторы и указывая тот или иной инициализатор. Средств прямого вызова конструктора в языке нет. Это относится ко всем конструкторам, в т.ч. к конструктору по умолчанию.
Наверное, единственный контекст, который можно назвать отдаленно приближающимся к "вызову конструктора" - это делегация из одного конструктора в другой в С++11... Однако нет: согласно спецификации языка, делегация конструкторов работает по общим правилам инициализации. Что, кстати, дает нам еще один баг GCC. Вот в таком коде
#include <iostream>
struct S
{
int x;
S() = default;
S(const char *) : S() {}
};
int main()
{
S s("abba");
std::cout << s.x << std::endl;
}
GCC не инициализирует s.x
нулем. Clang и MSVC работают правильно. Смена инициализатора с ()
на {}
приводит к инициализации нулем и в GCC тоже.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Код рабочий, но нечитабельныйКак его упростить
Ошибку ловлю на строке 'int *mass1= ArrayGenerate(raz);':
У меня есть класс, но программа вылетает после создания объекта его типа
Как в opengl c++ нарисовать дугу которая начинается с определённой точки и заканчивается определённой точкой Пример - дуги которые между многоугольниками...