今天和群友聊天提及此事,特此记录以下。怎么利用函数改变实参的值。(不针对面向对象编程。)
1.值传递
我们在c++中直接构建方法时候,使用值传递,即
int fun(int a)这种形式,因为形参有自己的存储空间,所以我们在引用方法的时候,会优先把实参拷贝到形参的空间再利用,所以其实是不会改变值。
2.引用传递
在c++中,有不同于c的方法:引用。这就相当于对存储空间起一个别称,可以改变实参。
int fun(int &a)
3.地址传递,也就是利用指针读取数据修改。
而我们进行面向对象编程二点时候,其实就是默认用了值引用。会改变相应的值:
利用this指针访问成员变量进行修改或者直接改变变量的值。
那么this是什么:this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this。不过 this 这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中。