对象做形参时,容易不小心出错的就是对象做形参需要压栈与拷贝工作。
如果是引用的话就不会拷贝对象,而是拷贝地址。
因此通过一个临时对象引用来获得对象属性的方法,往往不那么凑效
如下代码
CClientDC _DC(this);
//_DC.SelectObject(&CPen(PS_SOLID ,1,RGB(255,0,0)));
CPen *pOldPen = CPen::FromHandle((HPEN)GetStockObject(NULL_PEN));
//CPen NewPen(PS_SOLID,1,RGB(255,0,0));
_DC.SelectObject(&CPen(PS_SOLID ,1,RGB(255,0,0)));
_DC.MoveTo(m_sPoint);
_DC.LineTo(point);
_DC.SelectObject(pOldPen);
这样因为压栈之后临时对象hpen已经失效,所以当用地址去查询它的时候,SelectObject函数会失败。