这些都是一样的:
int foo(bar* p) {
return p->someInt();
}
Run Code Online (Sandbox Code Playgroud)
和
int foo(bar& r) {
return r.someInt();
}
Run Code Online (Sandbox Code Playgroud)
忽略空指针潜力.这两个函数在功能上是否相同,无论它们someInt()是虚拟的还是传递给它们bar的子类bar?
这会切片吗:
bar& ref = *ptr_to_bar;
Run Code Online (Sandbox Code Playgroud)