| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 335 人关注过本帖
标题:三种方式调用虚函数......
取消只看楼主 加入收藏
lianjiecuowu
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:152
专家分:107
注 册:2011-5-20
结帖率:85.71%
收藏
 问题点数:0 回复次数:0 
三种方式调用虚函数......
注释:分别利用对象,指针,引用的方式调用虚函数
在传值调用中,虚函数没有起到多态性的作用
在传址调用和按引用调用中,虚函数起到多态性的作用
#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();
}
搜索更多相关主题的帖子: 虚函数 多态性 
2011-06-09 23:07
快速回复:三种方式调用虚函数......
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032272 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved