首页 > 代码库 > c++虚函数实现动态绑定
c++虚函数实现动态绑定
c++规定 函数动态绑定 需要使用虚函数来实现。 具体的实现方法是:动态联编 使用对象的引用或对象的指针 来操作 虚函数, 但是如果使用对象 来操作虚函数的话,仍然会采用静态联编的方式。
#include<iostream> using namespace std; class A { public: virtual void printA() { cout<<"A:printA()"<<endl; } }; class B :public A { public : virtual void printA() { cout<<"B:printA()"<<endl; } }; void printAB(A &aa) { aa.printA(); } int main() { A a= A(); B b= B(); A *pab=b;//pab 表示是一个指针 是A 类型的 但是指向了B类对象 // B *pba=a; 如果不注释起来 会报错 ,因为只可以用父类的指针 指向子类的对象;而子类的 // 指针不可以指向父类的对象 pab->printA();//通过对象的指针 来使用 虚函数,实现动态联编,结果会是 B:printA() //也可以使用 引用来对操作 A &aa = b; printAB(aa);//效果与 aa.printA() 一样 都是 执行了 B:printA(); return 0; }
其实 之所以会有 动态联编这种模式的出现 ,就是因为 项目经理 会定义出 父类的操作,而员工 需要实现出 具体的 子类中与父类中对应的操作的实现, 而并不需要使用父类的操作, 所以动态联编的结果 基本上都是 使用 父类的指针或者引用 来指向或者引用 子类的对象,从而达到 实现子类操作的目的。
本文出自 “xingNalLu” 博客,请务必保留此出处http://781588100.blog.51cto.com/9429625/1559681
c++虚函数实现动态绑定
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。