如果我在C++中有:
class A {
private: virtual int myfunction(void) {return 1;}
}
class B: public A {
private: virtual int myfunction(void) {return 2;}
}
如果我从类B中的myfunction定义中移除virtual关键字,那么是否意味着如果我有一个基于类B的类C,则无法覆盖myfunction,因为它会被静态编译?此外,当在public和private之间切换时会发生什么,让我很困惑。如果我将类B中myfunction的定义更改为public(而在类A中保持为private),这是一种严重的错误吗?我认为虚函数需要保持相同的类型,所以这是不合法的,请告诉我是否正确。
谢谢!