作业帮 > 综合 > 作业

关于函数实参的问题:实参可以是这样的吗?:Rectangle(CRect(m_CPoint,point));

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/05/13 17:40:56
关于函数实参的问题:实参可以是这样的吗?:Rectangle(CRect(m_CPoint,point));
这个函数是CRect类的函数,形参类型是LPCRECT类型,但是实参是CRect(m_CPoint,point),好像是个类名+构造实参,但是没有对象名,而且很难理解其意思,但是却能成功运行,为什么能这样写?
关于函数实参的问题:实参可以是这样的吗?:Rectangle(CRect(m_CPoint,point));
首先CRect(m_CPoint,point)是显示的调用了类CRect的构造函数,用其来创建一个类的对象(隐式对象,没有对象名,但实际存在于了类存中),然后将LPCRECT(它为指向RECT的指针)指向刚创建的那个对象.
再问: 这种方法是类似于new运算符的使用吗?
再答: 不可以这么说,new分配的内存存在于堆中,是需要delete去释放的。而这种隐式的对象是系统自动释放。
再问: CRect(m_CPoint,point)所返回的是指向对象的指针吗?可以这样写吗:CRect *ptrect=CRect(实参列表);
再答: 回答问题之前纠正下,函数中的参数列表你可以喊它为形参列表或者函数特征标。 CRect(m_CPoint,point)是构造函数,没有返回类型,但是创建了一个隐式的类对象。 CRect *ptrect=CRect(形参列表)是可以的。