现在的位置: 首页 > 综合 > 正文

动态绑定

2014年01月14日 ⁄ 综合 ⁄ 共 576字 ⁄ 字号 评论关闭

       在 C++ 中,通过基类的引用(或指针)调用虚函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象,这一事实是动态绑定的关键用引用(或指针)调用的虚函数在运行时确定,被调用的函数是引用(或指针)所指对象的实际类型所定义的。

        也就是说:当我们在设计一个基类时,要抽象出该类最本质的特征,比如说“员工”是一个基类,该基类中定义了“计算工资”的方法,那么“员工”的派生类“经理”和“前台”同样也可以使用基类“计算工资”的方法,但是“经理”、“前台”、“员工”的工资肯定不相同,也就是说“计算工资”方法的具体实现是每个类自己的特征,解决这个问题的方法就是在“员工”基类中把“计算工资”声明为虚函数,然后在派生类中重写“计算工资”,这样每个类就拥有了各自的“计算工资”方法。

        这样,当使用一个基类指针或引用调用“计算工资”方法时,根据该基类指针所指对象的类型确定应该调用那个类的“计算工资”方法。(如果在这有疑惑的话请仔细读文章第二句话),这样就给程序带来了极大的便利,我们只需要调用方法,而不用管具体应该调用那个类的方法,因为这个工作可以自动完成。

 

PS:虚函数的使用可以带来很大便利,但也会造成一些额外开销,有利有弊,因此大量使用虚函数是不正确的,关于虚函数的实现机制推荐读侯捷老师的《深入浅出MFC》

抱歉!评论已关闭.