当我运行此代码时,由于后期绑定,输出如预期的“这是派生 2”,因为我们在基类中使用了虚函数。
#include <iostream>
using namespace std;
class Base {
public :
virtual void show() {
cout<<"This is base class"<<endl;
}
};
class Derived : public Base {
public:
void show() {
cout<<"This is derived class"<<endl;
}
};
class D2 : public Derived {
public :
void show () {
cout<<"This is derived 2"<<endl;
}
};
int main() {
Base *obj = new D2();
obj->show();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
同样,如果我将代码更改为
#include <iostream>
using namespace std;
class Base {
public :
void …Run Code Online (Sandbox Code Playgroud)