在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 } };
原文:https://www.cnblogs.com/jiebanren/p/12914507.html