临时对象

临时对象

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;
}

2.2 类型转换生成的临时对象 / 隐式类型转换以保证函数调用成功

2.3 函数返回对象的时候

posted @ 2024-11-10 23:40  爱新觉罗LQ  阅读(15)  评论(0编辑  收藏  举报