• C++中类的多态与虚函数的使用


         多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码:

    //例程1 
    #include <iostream>     
    using namespace std;   
       
    class Vehicle 
    {   
    public:   
        Vehicle(float speed,int total) 
        { 
            Vehicle::speed=speed; 
            Vehicle::total=total; 
        } 
        void ShowMember() 
        { 
            cout<<speed<<"|"<<total<<endl; 
        } 
    protected:   
        float speed; 
        int total; 
    };   
    class Car:public Vehicle   
    {   
    public:   
        Car(int aird,float speed,int total):Vehicle(speed,total)   
        {   
            Car::aird=aird;   
        } 
        void ShowMember() 
        { 
            cout<<speed<<"|"<<total<<"|"<<aird<<endl; 
        } 
    protected:   
        int aird; 
    };   
     
    void main()   
    {   
        Vehicle a(120,4); 
        a.ShowMember(); 
        Car b(180,110,4); 
        b.ShowMember(); 
        cin.get(); 
    }

      在c++中是允许派生类重载基类成员函数的,对于类的重载来说,明确的,不同类的对象,调用其类的成员函数的时候,系统是知道如何找到其类的同名成员,上面代码中的a.ShowMember();,即调用的是Vehicle::ShowMember(),b.ShowMember();,即调用的是Car::ShowMemeber();。

      但是在实际工作中,很可能会碰到对象所属类不清的情况,下面我们来看一下派生类成员作为函数参数传递的例子,代码如下:

    //例程2 
    #include <iostream>     
    using namespace std;   
       
    class Vehicle 
    {   
    public:   
        Vehicle(float speed,int total) 
        { 
            Vehicle::speed=speed; 
            Vehicle::total=total; 
        } 
        void ShowMember() 
        { 
            cout<<speed<<"|"<<total<<endl; 
        } 
    protected:   
        float speed; 
        int total; 
    };   
    class Car:public Vehicle   
    {   
    public:   
        Car(int aird,float speed,int total):Vehicle(speed,total)   
        {   
            Car::aird=aird;   
        } 
        void ShowMember() 
        { 
            cout<<speed<<"|"<<total<<"|"<<aird<<endl; 
        } 
    protected:   
        int aird; 
    };   
     
    void test(Vehicle &temp) 

        temp.ShowMember(); 

     
    void main()   

        Vehicle a(120,4); 
        Car b(180,110,4); 
        test(a); 
        test(b); 
        cin.get(); 
    }

  • 相关阅读:
    结对编程
    四则运算
    认清自我,创造未来!!!
    浅谈GIT
    典型用户及用例故事
    结对编程 四则运算
    四则运算
    《未来的程序员》
    java项目命名规范
    四则运算测试
  • 原文地址:https://www.cnblogs.com/zhen/p/1503029.html
Copyright © 2020-2023  润新知