3 回答

TA貢獻1798條經(jīng)驗 獲得超3個贊
依我看,主要體現(xiàn)在兩點:
1 仿制過分復制
函數(shù)調(diào)用中傳值,會占用大量堆??臻g,同時過多的拷貝函數(shù)調(diào)用會降低性能。
例如有個類
class A
{
int buffer[1000000];
.....
A(const A&)....
A& operator=(const A&)....
};
void function(A a)
{
A b;
b = a;
.......
}
上面的例子中,不但會占用大量堆棧空間,而且等號與拷貝函數(shù)都影響性能。
2 動態(tài)生成內(nèi)存
很多對象可能一輩子都不用構(gòu)造,用指針可以做到這點。
如:
class Render
{
void InitRender()
{
int iRender = CheckDevice(); //檢查最佳配置
switch(iRender)
{
case d3d9:
CreateD3D9Render(&pd9);
break;
}
}
IOpenGLRender* por;
ID3D9Render* pd9;
ID3D11Render* pd11;
IGDIRender* pgr;
};
顯然,你只需要一個Render,如果不用指針,一個Render可能耗掉你上百MB內(nèi)存

TA貢獻1848條經(jīng)驗 獲得超2個贊
添加回答
舉報