动态联编
来源:互联网 发布:lg照片打印机的软件 编辑:程序博客网 时间:2024/05/01 01:31
#include<iostream>using namespace std;class A{public:virtual void fun(){cout<<"A"<<endl;}};class B:public A{public:virtual void fun(){cout<<"B"<<endl;}};int main(){A *a;int i;while(cin>>i){switch(i){case 1:a=new A;a->fun();break;case 2:a=new B;a->fun();break;default:cout<<"error"<<endl;break;}}return 0;}
只有在使用指针或引用的时候才能实现动态联编。
在虚函数调用成员函数的例程如下:
#include<iostream>using namespace std;class A{public:virtual void fun(){cout<<"A"<<endl;two();}void two(){cout<<"B"<<endl;}};class B:public A{public:void fun(){cout<<"1"<<endl;two();}void two(){cout<<"2"<<endl;}};class C:public A{public:void fun(){cout<<"一"<<endl;two();}void two(){cout<<"二"<<endl;}};int main(){A *a;int i;while(cin>>i){switch(i){case 1:a=new A;a->fun();break;case 2:a=new B;a->fun();break;case 3:a=new C;a->fun();break;default:cout<<"error"<<endl;break;}}return 0;}
输出为:
虚析构函数:
#include<iostream>using namespace std;class A{public:A(){cout<<"A Con"<<endl;}virtual void fun(){cout<<"A"<<endl;two();}void two(){cout<<"B"<<endl;}virtual ~A(){cout<<"A Dis"<<endl;}};class B:public A{public:B(){cout<<"B Con"<<endl;}void fun(){cout<<"1"<<endl;two();}void two(){cout<<"2"<<endl;} ~B(){cout<<"B Dis"<<endl;}};class C:public A{public:C(){cout<<"C Con"<<endl;}void fun(){cout<<"一"<<endl;two();}void two(){cout<<"二"<<endl;} ~C(){cout<<"C Dis"<<endl;}};int main(){A *a;int i;while(cin>>i&&i){switch(i){case 1:a=new A;a->fun();break;case 2:a=new B;a->fun();break;case 3:a=new C;a->fun();break;default:cout<<"error"<<endl;break;}delete a;}return 0;}
在将基类指针指向派生类对象时,如果基类析构函数不声明为虚析构,则只能析构基类的对象,而不能析构派生类对象,在上面例程中如果将A的析构函数前的virtual去掉就会出现调用两个构造函数而只析构一个对象的现象。这样就会导致内存泄露。
- 解析动态联编
- 解析动态联编
- 解析动态联编
- 解析动态联编
- 动态联编
- 动态联编
- 解析动态联编
- 动态联编
- 动态联编
- 动态联编
- 解析动态联编
- 动态联编
- 动态联编
- 动态联编
- 动态联编
- 动态联编【转】
- 动态联编-静态联编
- 静态联编与动态联编
- 用Ubuntu 11.10+Apache SSL,Subversion ,trac快速搭建一个项目管理系统
- Java程序员面试题及解答
- ubuntu rpm
- Objective-C及Xcode 4入门视频
- dom4j读写xml文件
- 动态联编
- 新的动力。
- java中Comparator 和 Comparable 的区别
- bios printf浮点数问题
- 程序员能力矩阵[转]
- 并行博弈树搜索算法-第7篇 另辟蹊径:其他的博弈树并行搜索算法
- 农场计数
- 并行博弈树搜索算法-第8篇 写在最后的话:有趣的的博弈算法
- Android远程图片获取和本地缓存