指针与引用参数:详细检查
问题:
做指针参数(例如,int foo(bar* p) { ... })和引用参数(例如,int foo(bar& r) { ... })在 C 中的行为相同?
答案:
指针和引用之间的区别超出了它们的实现标准中的详细信息。引用体现了语法糖概念,本质上是为变量创建别名。这允许编译器优化指针会增加复杂性的代码。
功能等价:
假设没有空指针问题,函数 foo(bar* p) 和 foo如果 someInt() 方法不是虚拟的, (bar& r) 本质上是等价的。这两个函数都通过参数直接访问对象的成员函数。但是,如果 someInt() 是虚拟的,则基于引用的参数函数 (foo(bar& r)) 将根据实际对象的类型调用正确的方法,而基于指针的函数 (foo(bar* p)) 将始终调用基类方法。
分配给引用:
分配栏& ref = *ptr_to_bar 不会导致任何切片。引用 ref 将为 ptr_to_bar 指向的对象起别名,允许您直接访问其成员。
其他差异:
以上是C 中指针和引用参数的功能相同吗?的详细内容。更多信息请关注PHP中文网其他相关文章!