我读了this similar question但是在研究了C ++几周后,我很好奇的一件事是:为什么在C ++中使用指针或引用?
为什么不使用另一个,但为什么不使用原始值?
默认情况下,如果始终传递原始值,那么在C ++中通过值传递的东西会不会消除很多混乱和偶然的副作用?
是否只是为了在堆栈上传递较小的值?
答案 0 :(得分:1)
很多原因。一般来说,它的使用是因为性能。
复制对象会占用内存,CPU和时间。如果将作为参数传递的每个对象复制到您使用它们的函数中,即使由于任何特定原因不必复制此对象,您也会使应用程序性能不佳。
传递非基本类型的每个参数,读取struct
和class
es作为参考或指针是有意义的,除非你有充分的理由不这样做。< / p>
您可能还希望将对象或变量传递给函数,然后该函数会在其原始位置对其进行修改。如果你传递了这个变量的副本,那么函数就不会修改它,它只会修改它的临时易失性副本。您必须将此变量或对象作为引用或指针传递,以便该函数具有修改它的方法。
答案 1 :(得分:1)
如果你想使用原始结构或值,那么 only选项几乎就是使用引用或指针;例如
void pass_by_value(int x)
{
// x is a *copy* of whatever gets passed in, not the original
}
void pass_by_reference(int &x)
{
// x refers what got passed in, not a copy of what got passed in
}