jam*_*tha 15 c++ methods overriding
假设我有以下课程:
class A {
public:
virtual void foo() {
bar();
}
protected:
virtual void bar() {
// Do stuff
}
}
class B : public A {
protected:
virtual void bar() {
// Do other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
如果我有一个B实例并调用foo方法,那么会调用哪个bar方法?这个编译器是否具体?
谢谢
das*_*ght 22
该A::foo
会称B::bar
,如果你有一个实例B
.如果通过指针或对基类的引用引用实例并不重要:无论如何,B
都调用了版本; 这就是使多态调用成为可能的原因.该行为不是特定于编译器的:虚函数根据标准以这种方式运行.
归档时间: |
|
查看次数: |
7186 次 |
最近记录: |