执行其语义学
6.1 对象的构造和解构对象的解构发生在离开当前区域之前,而不是说大括号之前
对象数组:编译器调用一个宁为vec_new()的函数,产生出以class object对象构造而成的数组。
void * vec_new(void * array, // 数组的起始地址 size_t elem_size, // 每个class object的大小 int elem_cout, // 数组元素的个数 void (* construcotr) (void*) , // default constructor 的函数指针 void (* destructor) (void * , char) // default destructor的函数指针 |
point knowts[10]; --->vec_new(&knots,sizeof(point),10,&point::point,0) point knowts[10]={ point(),point(1,2,3) } -->point::point (&knots[0] ); point::point (&knots[1] ); vec_new(&&knowts+3*sizeof(point) , sizeof(point), 7,&point::point ,0) point3d *p_array = new point3d[10]; |
void* vec_delete( void * array, // 数组起始地址 size_t elem_size, // 每个object 的大小 int elem_count, // 述组中的元素数目 void (*destructor) (void*, char) ) Placement Operator new 的语义 |
ptw->~point2w(); |