C++的继承与多态demo

继承(非virtual方式继承):

  1. #include <iostream>
  2.  
  3. class A
  4. {
  5. public:
  6.         void fun ( ) { std:: cout << "A::fun()" << std:: endl; }
  7. };
  8.  
  9. class B: public A
  10. {
  11. public:
  12.         void fun ( ) { std:: cout << "B::fun()" << std:: endl; }
  13.         void fun2 ( ) { std:: cout << "B::fun2()" << std:: endl; }
  14. };
  15.  
  16. void main ( void )
  17. {
  18.         A a;
  19.         a. fun ( );                //      A::fun()
  20.  
  21.         B b;
  22.         b. fun ( );                //      B::fun()
  23.         b. fun2 ( );               //     B::fun2()
  24.  
  25.         A* rA = &b;
  26.         rA->fun ( );            //    A::fun()
  27.         std:: cout << &b << " " << rA << std:: endl;
  28.        
  29.         B* rB = static_cast<B*> (&a );
  30.         rB->fun ( );            //    B::fun()
  31.         rB->fun2 ( );           //   B::fun2()
  32.         std:: cout << &a << " " << rB << std:: endl;
  33.  
  34.         system ( "pause" );
  35. }

多态:

  1. #include <iostream>
  2.  
  3. class A
  4. {
  5. public:
  6.         virtual void fun ( void ) { std:: cout << "A::fun()" << std:: endl; }
  7. };
  8.  
  9. class B: public A
  10. {
  11. public:
  12.         void fun ( void ) { std:: cout << "B::fun()" << std:: endl; }
  13.         void fun2 ( void ) { std:: cout << "B::fun2()" << std:: endl; }
  14. };
  15.  
  16. void main ( void )
  17. {
  18.         A a;
  19.         a. fun ( );                //      A::fun()
  20.  
  21.         B b;
  22.         b. fun ( );                //      B::fun()
  23.         b. fun2 ( );               //     B::fun2()
  24.  
  25.         A* rA = &b;
  26.         rA->fun ( );            //    B::fun()
  27.  
  28.         B* rB = static_cast<B*> (&a );
  29.         rB->fun ( );            //    A::fun()
  30.         rB->fun2 ( );           //   B::fun2()
  31.  
  32.         system ( "pause" );
  33. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值