您的位置:首页 > 编程语言 > C语言/C++

C++虚函数实现动态多态运行

2011-07-08 16:36 302 查看
#include<iostream>
using namespace std;
class A
{
int a;
public:
virtual void fun(){cout<<"调用A::fun()"<<endl;cout<<"a="<<a<<endl;} //如果没有virtual
A(int tmp=111){a = tmp;cout<<"调用A构造函数"<<endl;}
};class B:public A
{
int b;
public:
void fun()
{
cout<<"调用B::fun()"<<endl;
cout<<"b="<<b<<endl;
}
B(int tmp=2)//:A(tmp)
{
b = tmp;cout<<"调用B构造函数"<<endl;
}
};int main()
{
B* b=new B();
A *tmpa;
tmpa = b;
tmpa->fun();
//delete a;
delete b;
return 0;
}编译后运行结果:[student@SEP4020 testc++]$ ./xxx
调用A构造函数
调用B构造函数
调用B::fun()
b=2 但是如果把类A中的virtual关键字去掉的运行结果:[student@SEP4020 testc++]$ ./xxx
调用A构造函数
调用B构造函数
调用A::fun()
a=111由此可知,将派生类对象地址赋值给一个基类指针,由虚函数可实现C++的运行时多态性,尽管调用形式会一样,但是却调用的不同对象中的虚函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: