在C ++中使用引用和指针有什么意义?

时间:2015-08-02 03:24:16

标签: c++ pointers reference

我读了this similar question但是在研究了C ++几周后,我很好奇的一件事是:为什么在C ++中使用指针或引用?

为什么不使用另一个,但为什么不使用原始值?

默认情况下,如果始终传递原始值,那么在C ++中通过值传递的东西会不会消除很多混乱和偶然的副作用?

是否只是为了在堆栈上传递较小的值?

2 个答案:

答案 0 :(得分:1)

很多原因。一般来说,它的使用是因为性能。

复制对象会占用内存,CPU和时间。如果将作为参数传递的每个对象复制到您使用它们的函数中,即使由于任何特定原因不必复制此对象,您也会使应用程序性能不佳。

传递非基本类型的每个参数,读取structclass 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
}