• *** C++纯虚函数使用example code 1


    #include <iostream>
    #include <string.h>
    using namespace std;
    
    class base
    {
    public:
        virtual void func1(void) = 0;
        virtual void func2(void) = 0;
        void print(void)
        {
            func1();
            func2();
        }
    };
    
    class derived: private base
    {
    public:
        virtual void func1(void)
        {
            cout << "derived: func1()" << endl;
        }
        virtual void func2(void)
        {
            cout << "derived: func2()" << endl;
        }
        void print(void)
        {
            base::print();
        }
    };
    
    
    int main()
    {
        derived a;
        a.print();
        
        return 0;
    }

     下面代码显示了不同调用虚函数时的实际执行情况:

    #include <iostream>
    
    using namespace std;
    
    class A
    {
    public:
        virtual void print(void)
        {
            cout << "A: print" << endl;    
        }
    };
    
    class B: public A
    {
    public:
        virtual void print(void)
        {
            cout << "B: print" << endl;    
        }
    };
    
    class C: public A
    {
    public:
        virtual void print(void)
        {
            cout << "C: print" << endl;    
        }
    };
    
    void print(A a)
    {
        a.print();    
    }
    
    int main()
    {
        A a, *pa, *pb, *pc;
        B b;
        C c;
        
        pa = &a;
        pb = &b;
        pc = &c;
        
        a.print();
        b.print();
        c.print();
        
        pa->print();
        pb->print();
        pc->print();
        
        print(a);
        print(b);
        print(c);
        
        return 0;
    }

    执行结果为:

    A: print                                                                                                                                                                           
    B: print                                                                                                                                                                           
    C: print                                                                                                                                                                           
    A: print                                                                                                                                                                           
    B: print                                                                                                                                                                           
    C: print                                                                                                                                                                           
    A: print                                                                                                                                                                           
    A: print                                                                                                                                                                           
    A: print
  • 相关阅读:
    批处理学习笔记9
    批处理学习笔记8
    批处理学习笔记10
    批处理学习笔记7
    批处理学习笔记6
    批处理学习笔记系列
    批处理学习笔记5
    批处理学习笔记3
    批处理学习笔记4
    批处理学习笔记2
  • 原文地址:https://www.cnblogs.com/superrunner/p/10134941.html
Copyright © 2020-2023  润新知