彻底搞懂c++参数传递与返回

在c++中,对象作为参数传入,赋值,返回对象。都是拷贝对象。

即修改一处,另一处不会被修改,这些对象的指针地址都是不一样的

在函数结束时,函数内创建的对象就会释放,返回对象是返回一个新的拷贝(相当于在调用层创建这个对象)。

为了减少拷贝次数,可以将参数作为引用传入,在函数内操作这个参数时,相当于操作传入的那块内存

内部如果需要存储这个变量,需要使用指针的方式,如果直接使用对象赋值,则会发生拷贝

class MyClass2
{
public:
    MyClass *dd;
    void gh(MyClass& d) {
        dd = &d;
        cout << "传入的地址" << &d << endl;
        cout << "指针地址" << dd << endl;
        //内存地址输出结果一致,可以直接操作内部指针dd来改变外部对象
    }
};

class MyClass2
{
public:
    MyClass dd;
    void gh(MyClass& d) {
        dd = d;
        cout << "传入的地址" << &d << endl;
        cout << "内部地址" << dd << endl;
        //内存地址不同,操作内部对象dd不会影响传入的对象d
    }
};

猜你喜欢

转载自www.cnblogs.com/jiebanren/p/12914507.html