如果我有父类A和子类B和C的继承层次结构,我如何通过boost :: shared_ptr<>使用多态性?这样一个功能
virtual void my_func(boost::shared_ptr<A> x) = 0;
可以实现为
void my_func(boost::shared_ptr<B> x);
和
void my_func(boost::shared_ptr<C> x);
?即使存在shared_ptr概念,多态仍然有效吗?
(很高兴知道这是否适用于std :: shared_ptr以及boost)
答案 0 :(得分:1)
在C ++中覆盖函数时,参数类型必须与基类中的参数类型相同。允许的唯一变体是,如果基类返回指针或引用,则重写函数可能具有协变返回类型。
对于论证类型,任何潜在的变化都取决于它是什么类型的论证: