mch*_*hen 1 c++ inheritance class function
例如,考虑:
class Deriv : public Base {...};
...
bar(Deriv d);
bar(Base b);
foo(Base b) {bar(b);}
...
Deriv x;
foo(x); // does x get treated as Base for the bar() call
// or retain its Deriv type?
Run Code Online (Sandbox Code Playgroud)
如果foo
通过参考传递怎么办?
你正在通过值传递,因此你正在创建一个Base类型的新对象,并为它分配一个副本.
非常糟糕,你将体验切片..它不会保留它的阶段,不建议. http://en.wikipedia.org/wiki/Object_slicing
通过引用传递或const引用无论如何更好更快:
bar(const Base& b)
Run Code Online (Sandbox Code Playgroud)
或传递指向对象的指针,你将保持状态.bar(Base*b);
这将是处理这个问题的正确方法.