C++에서 이와 같이 생성자를 호출하지 않고 객체를 생성합니다. 이것은 정의 된 행동으로 계산됩니까? 당신은 개체에 대한 데이터를 저장할 수있는 메모리 블록을 구축생성자 호출없이 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++ 구문에는 어떤 문제가 있습니까? –