64,654
社区成员
发帖
与我相关
我的任务
分享
QVertex3d Center()
{
QVertex3d center;
center.m_Coord[0] = 0.5*(pMax.m_Coord[0]+pMin.m_Coord[0]);
center.m_Coord[1] = 0.5*(pMax.m_Coord[1]+pMin.m_Coord[1]);
center.m_Coord[2] = 0.5*(pMax.m_Coord[2]+pMin.m_Coord[2]);
return center;
}
其实,你得看你的QVertex3d 是个啥东西?类么?
做法有以下:
一、用指针:QVertex3d *pQ = new QVertex3d;这样,返回一个指针,因为new出来的内存在堆上。所以不会释放内存,自己在外自动释放
二、用全局:这种方法不好,毕竟,破坏了封装性。不推荐
三、作为参数传递:可以传递引用、也可以传递指针。
四、局部静态变量:这应该行不通、因为,这是局部的,在外访问的话,访问不了!
五、在调用的时候处理:这个需要QVertex3d 的拷贝构造函数,或者说是构造函数:比如:QVertex3d q(Center())、或者QVertex3d q = Center()
……
QVertex3d Center(QVertex3d ¢er) //实参可以是外部的非全局变量
{
center.m_Coord[0] = 0.5*(pMax.m_Coord[0]+pMin.m_Coord[0]);
center.m_Coord[1] = 0.5*(pMax.m_Coord[1]+pMin.m_Coord[1]);
center.m_Coord[2] = 0.5*(pMax.m_Coord[2]+pMin.m_Coord[2]);
return center;
}
如果copy构造函数没有问题,完全可以返回一个局部对象的副本。
只不过增加了调用的开销,影响执行效率,除此别无他碍
局部对象离开了作用域,但它在牺牲之前把自己的一切属性都传给了副本(一种所有属性的传承)
QVertex3d Center()
{
static QVertex3d center;
center.m_Coord[0] = 0.5*(pMax.m_Coord[0]+pMin.m_Coord[0]);
center.m_Coord[1] = 0.5*(pMax.m_Coord[1]+pMin.m_Coord[1]);
center.m_Coord[2] = 0.5*(pMax.m_Coord[2]+pMin.m_Coord[2]);
return center;
}
QVertex3d * Center()
{
QVertex3d *center = new QVertex3d();
center->m_Coord[0] = 0.5*(pMax.m_Coord[0]+pMin.m_Coord[0]);
center->m_Coord[1] = 0.5*(pMax.m_Coord[1]+pMin.m_Coord[1]);
center->m_Coord[2] = 0.5*(pMax.m_Coord[2]+pMin.m_Coord[2]);
return center;
}