您的位置:首页 > 编程语言 > C语言/C++

c++临时对象的来源即成本

2017-08-04 10:29 232 查看
程序员往往把临时需要的变量称为 “临时变量”。如:

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的临时对象。

避免的方法,显式禁止它。

临时对象的成本:

构造跟析构需要时间,影响效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: