C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

常用链接

留言簿(8)

搜索

  •  

最新评论

阅读排行榜

评论排行榜


1、 函数的多态

      多态可以简单地概括为“一个接口,多种方法”,在程序运行的过程中才决定调用的函数。多态是面向对象编程领域的核心概念。

2、 多态的实现

      多态往往借助于虚函数实现,把基类和派生类中相同的函数同时定义为虚函数。在一个含有基类和派生类的程序中,往往各个类中相应的成员函数具有相同的函数名、返回类型和参数表,但函数体不同。在每个类中都有实现相应功能的成员函数。

      当一个派生类的对象的地址赋给一个基类的指针后,基类指针只能访问所属的成员函数,不能访问该派生类对象中与基类成员函数相同的成员函数。但在实际应用中,需要把一个基类或派生类的对象的地址赋给一个基类的指针后,基类指针能够访问基类或派生类中与基类成员函数相同的成员函数。虚函数的定义方法时在成员函数前加关键字virtual。

      当基类和派生类中相同的函数定义为一组虚函数后,通过基类指针可以调用任一类中的虚函数。

#include <iostream>
using namespace std;
class Base
{
//构造函数和析构函数
public:
    Base()
{cout<<"Base构造函数"<<endl;}
    
virtual ~Base(){cout<<"Base析构函数"<<endl;}
public:
    
virtual void foo()
    
{
        cout
<<"Base"<<endl;
    }

}
;
/**//**//**//*********************************************************/
/**//**//**//*
/********************************************************
*/

class A:public Base
{
public:
    A()
{cout<<"A 构造函数"<<endl;}
    
virtual ~A(){cout<<"A 析构函数"<<endl;}
public:
    
virtual void foo()
    
{
        cout
<<"A"<<endl;
    }

}
;
/**//**//**//*********************************************************/
/**//**//**//*
/********************************************************
*/

class B:public Base
{
public:
    B()
{cout<<"B 构造函数"<<endl;}
    
~B(){cout<<"B 析构函数"<<endl;}
public:
    
virtual void foo()
    
{
        cout
<<"B"<<endl;
    }

}
;
/**//**//**//*********************************************************/
/**//**//**//*
/********************************************************
*/

int main()
{
    Base
* pBase=NULL;
    pBase
=new A;
    pBase
->foo();
    
if(pBase!=NULL)
    
{
        delete pBase;
        pBase
=NULL;
    }


    pBase 
=new B;
    pBase
->foo();
    
if(pBase!=NULL)
    
{
        delete pBase;
        pBase
=NULL;
    }

    
return 0;
}


代码的输出结果如下:


想要获得更多内容,可点击:《Visual C++代码参考与技巧大全》学习笔记——索引随笔

posted on 2010-02-17 16:16 烟皑 阅读(774) 评论(0)  编辑 收藏 引用 所属分类: 《Visual C++代码参考与技巧大全》学习笔记

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理