科技资讯

我应该使用按值调用还是按引用调用?

发布日期:2023-06-12    点击次数:155

这取决于您要实现的目标:

如果要更改传递的对象,请通过引用调用或使用指针;例如voidf(X&);或voidf(X*);

如果你不想更改传递的对象并且它很大,则通过const引用调用;例如voidf(constX&);

否则,按值调用;例如voidf(X);

“大”是什么意思?任何大于几个字的东西。

我为什么要改变一个参数?好吧,我们通常不得不这样做,但通常我们有另一种选择:产生新的值。考虑:

voidincr1(int&x);//自增

intincr2(intx);//自增

intv=2;

incr1(v);//vbecomes3

v=incr2(v);//vbecomes4

我认为对于读者来说,incr2更容易理解。即incr1更容易导致错误和错误。所以,我更喜欢返回一个新的值而不是修改原来的值,只要新创建的值的创造和复制并不昂贵。

我确实想更改参数,我应该使用指针还是应该使用引用?我不知道一个强有力的逻辑原因。如果传递“不是一个对象”(例如空指针)是可以接受的,那么使用指针是有意义的。当我想修改一个对象时,我的个人风格是使用指针,因为在某些情况下,这样更容易发现修改是可能的。

另请注意,成员函数的调用本质上是对对象的按引用调用,因此当我们想要修改对象的值/状态时,我们经常使用成员函数。



上一篇:“千模大战”100天, 文心一言与15万申测企业如何“软着陆”?
下一篇:跨境带货&TIKTOK: 直播与短视频带货到底有何区别?