C++構造と分析、虚数関数の応用

1341 ワード

#include <iostream>
using namespace std;
class A
{
public:
    A()//            ,     
    {
        cout<<"    A"<<endl;
    }
     ~A()  //            ,                 
    {
        cout<<"  A"<<endl;
    }
    
    virtual void DoSomething()
    {
        cout<<"A is doing something"<<endl;
    }
    
};
class B:public A
{
public:
    
    B()
    {
        cout<<"    B"<<endl;
    }
    ~B()
    {
        cout<<"  B"<<endl;
    };
    
    void DoSomething()
    {
        cout<<"Do something in class B"<<endl;
    }
};
int main(int argc, const char * argv[])
{

    B *b = new B;
    b->A::DoSomething();//C++     ,          ,C++        ,C#  base,OC java  super
    //  :  A/  B/A is doing something
    
    
    A *a = new B;
    a->DoSomething();//  A           ,      B    
    delete a;
    //  A DoSomething       ,  :    A/    B/A is doing something/  A
    //  :  A           ,           b
    
    A *b = new B; //      ,           
    b->DoSomething(); //  A DoSomething                 ,  A  DoSomething                   ,   A   。  :         ,     
    delete b;//       ,      
    //  :  A/  B/A is doing something/  B/  A
    
    return 0;
}