【发布时间】:2010-12-13 09:07:15
【问题描述】:
如果我有 C++:
class A {
private: virtual int myfunction(void) {return 1;}
}
class B: public A {
private: virtual int myfunction(void) {return 2;}
}
如果我从class B 中的myfunction 定义中删除virtual,这是否意味着如果我有一个基于class B 的class C,我就无法覆盖myfunction,因为它会被静态编译吗?
另外,我很困惑当你在这里切换公共和私人时会发生什么。如果我将class B 中myfunction 的定义更改为公开(class A 中的定义保持私有),这是我不应该做的某种严重错误吗?我认为虚函数需要保持相同的类型,所以这是非法的,但如果有错请告知。
谢谢!
【问题讨论】:
-
派生类方法不需要显式编写“virtual”关键字。你可以省略它,但拥有它是一种很好的风格。
标签: c++ inheritance virtual