在此代码中:
void Window::oops() { printf("Window oops\n"); }
void TextWindow::oops() {
printf("TextWindow oops %d\n", cursorLocation);
}
TextWindow x;
Window a;
Window *b;
TextWindow *c;
a = x; a.oops(); // executes Window version
b = &x; b->oops(); // executes TextWindow or Window version
c = &x; c->oops(); // executes TextWindow version
b = &x; b->oops();
将执行TextWindow或Window版本意味着什么?如何决定? 最佳答案
如果oops()
是虚拟的,则b->oops()
调用将使用TextWindow
版本。如果不是,它将使用Window
版本。