: 메모리만 할당함.
: 생성자만 호출함.
: Point 클래스의 경우, (디폴트 생성자 없음.)
-> new 연산자로는 10개 할당 불가능함.
#include <stdio.h>
#include <iostream>
using namespace std;
class Point
{
private :
int x_, y_;
public :
Point() { cout << "base constr" << endl; }
Point(int _x = 0, int _y = 0)
: x_(_x), y_(_y)
{
cout << "constr" << endl;
}
~Point()
{
cout << "destr" << endl;
}
};
//void* operator new(size_t sz)
//{
// cout << "wontae" << endl;
// return malloc(sz);
//}
int main()
{
// 1. 메모리 10개의 공간만 확보함.
Point *p = static_cast<Point *>(operator new(sizeof(Point) * 10));
// 2. 생성자를 명시적으로 10번 호출함.
for (int i = 0; i < 10; i++)
{
new (&p[i]) Point(2, 2);
}
// 3. 소멸자를 명시적으로 10번 호출함.
for (int i = 0; i < 10; i++)
{
p->~Point();
}
// 4. 메모리 해제
operator delete (p);
}
안녕하세요 혹시 몇가지 궁금한점이 있는데 메일알 수 있을까요