В C++ создается объект без вызова такого конструктора. Учитывается ли это как определенное поведение? (Игнорируйте unfreed память кучи)Создание объекта C++ без вызова конструктора
class Foo {
public:
int *ptr;
int a, b;
Foo() { ptr = new int{}; }
~Foo() { delete ptr; }
void set(int a_, int b_) {a = a_; b = b_;}
void print() { std::cout << *ptr << a << b; }
};
int main() {
char *array[sizeof(Foo)]; // note the pointer
*((int**)array) = new int{3};
((Foo*)array)->set(1, 2);
((Foo*)array)->print(); // 312
}
Нет, это полностью и полностью неопределенное поведение, так как слишком много разных причин перечислять. –
Вы не создаете объект, вы просто накладываете на объект существующее место памяти. – Robert
что случилось со стандартным синтаксисом C++? –