我没有和我一起使用有效的C ++,这让我非常烦恼,所以我必须要求自己的理智。给定
class Foo : public Bar{}
void MyFunc(Bar &_input);
如果我传入Foo
,我是否与slicing问题纠缠在一起还是我避免了这个问题?
答案 0 :(得分:13)
没问题,因为你传入了一个引用。你不是在创建一个新对象,只是让MyFunc访问原始对象。
答案 1 :(得分:6)
由于您传递了参考号 - 否,除非您稍后分配给Bar
的实例。
答案 2 :(得分:2)
将对象强制转换为父类时,切片只是一个问题。在转换指针或引用时没有切片。