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

C++ 临时对象

2010-05-19 01:01 204 查看
书上说,参数按值传递和返回值按值传递的时候产生临时对象,而函数按值传递参数的时候,产生临时变量比较好理解,其实就是函数参数的局部变量的生成。返回值生成临时变量有两种情况

class Test{
static int i;
public:
Test()
{
cout<<"ctor"<<endl;
}
Test(const Test&test)
{
cout<<"copy ctor"<<endl;
}
~Test(){

cout<<"destory.."<<endl;
}
void print()
{

}
};

Test F(Test x)
{
return x;

}


情况1:

int main()
{
Test t1;

Test t2=F(t1);

return 0;
}

这种情况下面,t2直接被F函数内部的变量用复制构造函数给构造,不生成临时变量,不存在临时变量的析构

情况2

int main()
{
Test t1;

Test t2;

t2=F(t1);

return 0;
}

这种情况,返回处会生成一个临时变量,在赋值给t2以后,析构掉。F内部的也会析构掉。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: