zoukankan      html  css  js  c++  java
  • 关于多态代码和运行结果

    #include <iostream>
    #pragma hdrstop
    using std::cout;
    using std::endl;
    //---------------------------------------------------------------------------
    #pragma argsused
    //---------------------------------------------------------------------------
    class Base {
    public:
    	Base() { };
    	virtual void DisplayMessage() {
    		cout << "Displaying Message from an object of Base class" << endl;
    	};
    };
    //---------------------------------------------------------------------------
    class DerivedFirst : public Base {
    public:
    	DerivedFirst() { };
    	void DisplayMessage() {
    		cout << "Displaying Message from an object of DerivedFirst class" << endl;
    	}
    };
    //---------------------------------------------------------------------------
    class DerivedSecond : public Base {
    public:
    	DerivedSecond() { };
    	void DisplayMessage() {
    		cout << "Displaying Message from an object of DerivedSecond class" << endl;
    	}
    };
    //---------------------------------------------------------------------------
    class DerivedThird : public Base {
    public:
    	DerivedThird() { };
    };
    //---------------------------------------------------------------------------
    int main()
    {
    	// create a base class object
    	Base* bc = new Base();
    	bc->DisplayMessage();
    	// delete the base class object and assign it to DerivedFirst object
    	delete bc;
    	bc = new DerivedFirst();
    	bc->DisplayMessage();
    	// delete the base class object and assign it to DerivedSecond object
    	delete bc;
    	bc = new DerivedSecond();
    	bc->DisplayMessage();
    	// delete the base class object and assign it to DerivedThird object
    	delete bc;
    	bc = new DerivedThird();
    	bc->DisplayMessage();
    	delete bc;
    	return EXIT_SUCCESS;
    }
    //---------------------------------------------------------------------------
    

    函数主要作用:用基类声明的指针(Base* bc),指向派生类,如果派生类中有与基类中相同的方面就调用子类的方法,如果子类没有该方面,就调用基类自身的方法。
    基类中如果不加virtual 关键字,用用基类声明的指针,调用函数时只能调用基类自身的函数。

  • 相关阅读:
    BZOJ3868 : The only survival
    BZOJ3740 : pku2842 N-dimension Matching N维匹配
    BZOJ2990 : [Ontak2010]Keyboard
    BZOJ3548 : [ONTAK2010]Party
    BZOJ3189 : [Coci2011]Slika
    BZOJ2679 : [Usaco2012 Open]Balanced Cow Subsets
    BZOJ2981 : [Poi2002]括号
    BZOJ4116 : [Wf2015]Tours
    BZOJ4107 : [Wf2015]Asteroids
    BZOJ4118 : [Wf2015]Window Manager
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/2010237.html
Copyright © 2011-2022 走看看