程序员往往把临时需要的变量称为 “临时变量”。如:
template<class T>
void swap(T& object1,T& object2)
{
T temp=object1;
object1=object2;
object2=temp;
}
temp 即临时对象,但是,在c++眼中,temp并不是临时对象,是一个局部对象。
c++临时对象是不可见的,一般临时对象会在下面两种情况下产生:
1.函数返回对象时
例如:
const Number operator+ (Number& object1,Number& object2){...}
这个函数会返回一个临时对象。记录两个对象的加法。使用const的原因是防止有(a+b)=c这种情况出现。
2.隐式类型转换转换发生时。
int fun(const string& str,char ch);//返回字符串中ch的个数。
char buffer[MAX];char c;
fun(buffer,c){...}
这时,buffer是char类型的数组,将buffer传递给fun函数,编译器会隐式类型转换将buffer转换为一个string的临时对象。
避免的方法,显式禁止它。
临时对象的成本:
构造跟析构需要时间,影响效率。