通常,在 C++ 中,将参数传递给多态对象的函数的代码使用指向它的指针似乎更可取:
class Base {};
class DerivedA : public Base {};
class DerivedB : public Base {};
void OperateOnObject(Base* obj) {};
vector<Base*> objects;
objects.push_back(new DerivedA());
objects.push_back(new DerivedB());
for (size_t i=0; i<objects.size(); i++) {
OperateOnObject(objects[i]);
}
为什么OperateOnObject()
通常写它来获取指针Base
而不是引用?切片是否存在潜在问题?(例如 vtable 丢失了)
我已经看到对类似问题的回答,但它似乎并没有解决同样的问题。