【1】C++中对象作为形式参数

基于目前的知识而言,C++中一个函数的形式参数传递主要分为两种类型:值传递和指针传递。
那么对象作为形参时是哪种传递呢?
可想而知,对象是引用数据类型,指向了其类下的数据成员和方法成员。
我们又知道,值传递相当与将变量的等值复制作为参数传入函数,函数内对其修改并不会影响传入值。
相反地,当传入参数为指针时,改变其指向的数据,往往会使得传入指针的指向数据成员发生变化。(如数组等)

但是当对象作为形式参数时,其虽然是指针传递,却不会保存其改变的值。

(C++14下):

class fun{
public:
    int i;
};
void test0(fun f){
    f.i++;
}
int main() {
    fun f1;
    f1.i=0;
    test0(f1);
    cout<<f1.i<<endl;
}
输出:0

那么,要如何写程序,能够保存更改呢?
很简单,将传入形参改为对象的地址即可。
更改后如下:

class fun{
public:
    int i;
};
void test0(fun* f){
    f->i++;
}
int main() {
    fun f1;
    f1.i=0;
    test0(&f1);
    cout<<f1.i<<endl;
}
输出:1

就可以保存对对象中数据成员的更改了。
tips:

  • 对象名访问数据成员: [对象].数据成员
    对象的指针访问数据成员:[指针]->数据成员

  • 传入时形参为&(取地址)+[对象]

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值