指针和参考参数之间的区别?
这些都是一样的:
int foo(bar* p) {
return p->someInt();
}
和
int foo(bar& r) {
return r.someInt();
}
忽略空指针的潜力。 是这两个函数功能相同不管someInt()
是虚拟的,或者如果它们传递一bar
或子类bar
?
这是否切片:
bar& ref = *ptr_to_bar;
故意在标准中没有指定使用指针来实现C ++引用。 引用更像是一个变量的“同义词”,而不是指向它的指针。 这种语义为编译器打开了一些可能的优化,因为在某些情况下可能会意识到指针会过度杀伤。
还有一些不同之处:
忽略每一个语法糖和可以用一个而不是另一个来完成的可能性,以及在其他答案(针对其他问题)中解释的指针和引用之间的区别......是的,这两个在功能上完全相同! 两者都调用函数并同时处理虚拟函数。
不,你的路线不切。 它只是将引用直接绑定到指针指向的对象。
一些关于你为什么想要使用另一个的问题:
我不会试图自己想出分歧,我会将你委派给那些以防万一你想知道的人。
引用是一个常量指针,即不能将引用更改为引用其他对象。 如果更改,则引用对象的值会更改。
例如:
int j = 10;
int &i = j;
int l = 20;
i = l; // Now value of j = 20
int *k = &j;
k = &l; // Value of j is still 10
链接地址: http://www.djcxy.com/p/20723.html