返回對(duì)象的效率
調(diào)用返回對(duì)象的函數(shù)時(shí),調(diào)用函數(shù)負(fù)責(zé)在堆棧中分配對(duì)象大小的內(nèi)存,并將對(duì)象指針傳給被調(diào)用函數(shù),被調(diào)用函數(shù)的
return語(yǔ)句調(diào)用該對(duì)象的構(gòu)造函數(shù)或拷貝構(gòu)造函數(shù)來(lái)初始化該對(duì)象.以下程序是一個(gè)例子.特別注意在沒有定義
EFFECTIVE的情況下程序的效率下降.
#include <stdio.h>
#define EFFECTIVE
class CBase
{
public:
CBase(int i){
m_iValue = i;
printf("CBase(int i)\n");
}
CBase()
{
m_iValue = 0;
printf("CBase()\n");
}
CBase(const CBase & base)
{
printf("CBase(const Base &base)\n");
m_iValue = base.m_iValue;
}
operator = (const CBase &base)
{
printf("operator =\n");
this->m_iValue = base.m_iValue;
}
~CBase(){
printf("~Base()\n");
}
public:
int m_iValue;
int m_iValue2;
};
CBase test()
{
#ifdef EFFICTIVE
return CBase(100);
#else
CBase base(100);
return base;
#endif
}
int main()
{
#ifdef EFFICTIVE
CBase base = test();
#else
CBase base;
base = test();
#endif
return 0;
}
posted on 2008-04-17 17:08 肥仔 閱讀(236) 評(píng)論(0) 編輯 收藏 引用 所屬分類: C++ 基礎(chǔ)