覆盖,重载,多态,遮蔽_skybeauty_新浪博客

注意:重载是在同一个类中,函数名相同,参数不同;
盖:当父类的函数中加入关键词virtual的时候,
遮盖:当父类中没有virtual关键词的时候



#include

using namespace std;

class A

{

private:

   int x;

public:

    A(){}

    A(int t)

    {

       static int i=0;

        i++;

        cout<<"A类的构造函数被调用第"<<i<<""<<"\n";

       x=t;

       cout<<"x="<<x<<"我是A"<<"\n";

    }

  virtual ~A()

    {

       static int j=0;

        j++;

        cout<<"A类的析构函数被调用第"<<j<<""<<"\n";

       

 

    }

   virtual  void get()

    {

       cout<<"我是A"<<"\n";

    }

    

};

class B: public A

{

private:

   int x;

public:

   virtual void get()

    {

       cout<<"我是B"<<"\n";

    }


    B(int t)

    {

       static int i=0;

        i++;

        cout<<"B类的构造函数被调用第"<<i<<""<<"\n";

       x=t;

       cout<<"x="<<x<<"我是B"<<"\n";

      

    }

  virtual ~B()

    {

       static int j=0;

        j++;

        cout<<"B类的析构函数被调用第"<<j<<""<<"\n";

        


        

    }



};

class C :public A

{

public:

    void get()

    {

       cout<<"我是C"<<"\n";

    }


    C(int t)

    {

       static int i=0;

        i++;

        cout<<"C类的构造函数被调用第"<<i<<""<<"\n";

       x=t;

       cout<<"x="<<x<<"我是C"<<"\n";

    }

  virtual ~C()

    {

       static int j=0;

        j++;

        cout<<"C类的析构函数被调用第"<<j<<""<<"\n";


        

    }

private:

   int x;

};

int main(int argc, const char * argv[])

{


    // insert code here...

   A *a;

    a=new B(1);

    a->get();

   return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值