临时对象
临时对象
1. 临时对象的概念
一些临时对象,是因为我们代码书写问题而产生的。统一称临时变量为临时对象
new delete 栈
2. 产生临时对象的情况和解决
3 种情况和解决方案
class CTempValue{
public:
int val1;
int val2;
public:
CTempValue(int v1 = 0, int v2 = 0);
CTempValue(const CTempValue& t) : val1(t.val1), val2(t.val2){ // 拷贝构造函数
cout << "调用了拷贝构造函数" << endl;
}
virtual ~CTempValue(){ // 析构函数
cout << "调用了析构函数" << endl;
}
public:
int Add(CTempValue tobj); // 普通函数
};
CTempValue:: CTempValue(int v1, int v2):val1(v1), val2(v2){
cout << "调用了构造函数" << endl;
cout << "val1 = " << val1 << endl;
cout << "val2 = " << val2 << endl;
}
CTempValue::Add(CTempValue tobj){
int temp = tobj.val1 + tobj.val2;
tobj.val1 = 1000; // 这里修改值对外界没有影响
return temp;
}
2.1 以传值的方式给函数传递参数【不建议,建议改成传引用的方式】
将 add 形参改为引用
CTempValue::Add(CTempValue& tobj){
int temp = tobj.val1 + tobj.val2;
tobj.val1 = 1000; // 这里修改值对外界没有影响
return temp;
}