在此代码中:

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版本。

08-25 09:01