gpt4 book ai didi

c++ - 指针参数和引用参数的区别?

转载 作者:IT老高 更新时间:2023-10-28 12:14:19 27 4
gpt4 key购买 nike

这些是一样的吗:

int foo(bar* p) {
return p->someInt();
}

int foo(bar& r) {
return r.someInt();
}

忽略潜在的空指针。无论 someInt() 是虚函数还是传递一个 barbar 的子类,这两个函数在功能上是否相同?

这会切任何东西吗:

bar& ref = *ptr_to_bar;

最佳答案

C++ 引用故意没有在标准中指定使用指针来实现。引用更像是变量的“同义词”,而不是指向它的指针。这种语义为编译器打开了一些可能的优化,当它可能意识到在某些情况下指针可能是过度杀伤时。

还有一些区别:

  • 您不能将 NULL 分配给引用。这是一个关键的区别和你更喜欢一个的主要原因其他。
  • 当您获取地址时指针,你得到的地址指针变量。当你采取引用地址,你得到变量的地址是引用。
  • 您无法重新分配引用。初始化后,它在整个生命周期中都指向同一个对象。

关于c++ - 指针参数和引用参数的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/620604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com