Object Create Operator new
对象创建运算符 new
new 运算符会自动创建一个相应大小的对象,调用对象的构造函数,并返回已创建对象的描述符。如果失败,该运算符将返回一个 null 描述符,可以与 NULL 常量进行比较。
new 运算符只能应用于类对象。它不能应用于结构体。
该运算符不得用于创建对象数组。为此,请使用ArrayResize()函数。
示例:
//+------------------------------------------------------------------+
//| Figure creation |
//+------------------------------------------------------------------+
void CTetrisField::NewShape()
{
m_ypos=HORZ_BORDER;
//--- randomly create one of the 7 possible shapes
int nshape=rand()%7;
switch(nshape)
{
case 0: m_shape=new CTetrisShape1; break;
case 1: m_shape=new CTetrisShape2; break;
case 2: m_shape=new CTetrisShape3; break;
case 3: m_shape=new CTetrisShape4; break;
case 4: m_shape=new CTetrisShape5; break;
case 5: m_shape=new CTetrisShape6; break;
case 6: m_shape=new CTetrisShape7; break;
}
//--- draw
if(m_shape!=NULL)
{
//--- pre-settings
m_shape.SetRightBorder(WIDTH_IN_PIXELS+VERT_BORDER);
m_shape.SetYPos(m_ypos);
m_shape.SetXPos(VERT_BORDER+SHAPE_SIZE*8);
//--- draw
m_shape.Draw();
}
//---
}需要注意的是,对象描述符不是内存地址的指针。
使用 new 运算符创建的对象必须使用delete运算符显式删除。
另请参阅
最后更新于