三种方式调用虚函数......
注释:分别利用对象,指针,引用的方式调用虚函数在传值调用中,虚函数没有起到多态性的作用
在传址调用和按引用调用中,虚函数起到多态性的作用
#include<iostream>
using namespace std;
class A
{
public:
virtual void get(){cout<<"输出的是A"<<endl;}
};
class B:public A
{
public:
void get(){cout<<"输出的是B"<<endl;}
};
class C:public A
{
public:
void get(){cout<<"输出的是C"<<endl;}
};
void a(A);
void b(A*);
void c(A&);
int main()
{
while(1)
{
cout<<"1.A 2.B 3.C 4.quit:"<<endl;
A*p=0;
int choice;
cin>>choice;
bool quit=false;
switch(choice)
{
case 1:
p=new A;
a(*p); //创建A类对象,并用p保存该对象的地址,*p代表的是创建的A类对象
break;
case 2:
p=new B;
b(p); //创建B类对象,p是保存B类对象的地址,p作为参数供b()使用
break;
case 3:
p=new C;
c(*p); //*p代表C类对象,供C()使用
break;
case 4:
quit=true;
break;
default:
p=NULL;cout<<"1.A 2.B 3.C 4.quit:"<<endl;
break;
}
if(quit==true)
break;
}
system("pause");
return 0;
}
void a(A a)
{
a.get();
}
void b(A*b)
{
b->get();
}
void c(A&c)
{
c.get();
}