class Base {
public:
void func() {
cout << "func() in Base." << endl;
}
virtual void test() {
cout << "test() in Base." << endl;
}
};
class Derived : public Base {
void func() {
cout << "func() in Derived." << endl;
}
virtual void test() {
cout << "test() in Derived." << endl;
}
};
int main() {
Base* b;
b = new Derived();
b->func();
b->test();
}
以上代码的运行结果是
func() in Base
func() in Dervied
b是一个基类指针,指向一个派生类对象,基类中有两个函数,一个虚函数test,一个普通函数func。对于test()函数就表现为动态绑定,实际调用的时候是派生类中的test,而func为普通函数,因此是静态绑定,指针类型是什么,就调用该类型相应的函数。
要触发动态绑定,需要满足两个条件
通过基类指针或者引用做形参,当实参传入不同的派生类指针或者引用,在函数内部触发动态绑定,从而实现运行时多态
我感觉这个有点复杂,留待继续学习