不一样,一个是复制传递,一个是引用传递。 复制传递时将对象复制一遍,在函数中的对象和原对象值相同,但是地址不同,函数中若修改对象的值,原对象不会受到影响,当函数执行完时,复制的对象会被销毁。 而引用传递不会复制,只是将原对象的地址传过去,类似指针。此时函数中的对象和原对象是一个东西,相同的地址,可能名字不一样而已。 一般传递对象时使用的是引用传递,效率更高。对象一般比较大,复制的话销毁的时间较多。如要防止函数修改参数,可以使用const 引用。 附个演示代码,你就知道了。#include <iostream>
using namespace std; class A{ public: void set(int data) { this->data =data; } void show() { cout << data <<endl; } private: int data; }; void change(A a, A &b) { a.set(3); b.set(3); } int main() { A a, b; a.set(1); b.set(1); cout <<"before"<<endl; a.show(); b.show(); change(a,b); cout<<"after"<<endl; a.show(); b.show(); cout << "Hello World" << endl; return 0; }
The result is:
before 1 1 after 1 3 Hello World
函数的参数为对象本身和对象的引用【函数参数为引用】
最新推荐文章于 2022-05-14 10:20:20 发布