C++ 抽象类与其继承类之间的多态性

C++ 抽象类与其继承类之间的多态性,c++,inheritance,polymorphism,C++,Inheritance,Polymorphism,我对多态性的使用有点迷茫:我有。。。 -抽象的A类 -从a继承、实现其方法并添加其他方法的类B -从B继承并添加更多方法的类C 我希望能够对这种结构进行多态性使用:创建一个类B的对象,将其存储到指向a的指针中,并在该指针上从B调用方法,而不能从C调用方法 我必须在A中声明从B和C添加的所有方法并使它们成为虚拟的,还是有其他方法?如果我创建一个B对象,这不是一个问题吗?因为在继承级别上,C中的方法仍然没有定义?如果您将其存储到指向a的指针中,那么您将只能调用a方法,除非您将其转换回指向B的指针,而

我对多态性的使用有点迷茫:我有。。。 -抽象的A类 -从a继承、实现其方法并添加其他方法的类B -从B继承并添加更多方法的类C

我希望能够对这种结构进行多态性使用:创建一个类B的对象,将其存储到指向a的指针中,并在该指针上从B调用方法,而不能从C调用方法


我必须在A中声明从B和C添加的所有方法并使它们成为虚拟的,还是有其他方法?如果我创建一个B对象,这不是一个问题吗?因为在继承级别上,C中的方法仍然没有定义?

如果您将其存储到指向a的指针中,那么您将只能调用a方法,除非您将其转换回指向B的指针,而不需要虚拟函数声明(尽管)根据定义,这里没有多态性。例如,如果您询问如何使用
a*ptr访问非虚拟
B::memberfn()
,而不使用类似
a::memberfn()
的多态覆盖没有vtable或转换为a
B*
答案是你不能。