• 18.03.28 多态作业


    A:看上去像多态

    程序填空产生指定输出

    #include <iostream>
    using namespace std;
    class B { 
        private: 
            int nBVal; 
        public: 
            void Print() 
            { cout << "nBVal="<< nBVal << endl; } 
            void Fun() 
            {cout << "B::Fun" << endl; } 
            B ( int n ) { nBVal = n;} 
    };
    // 在此处补充你的代码
    int main() { 
        B * pb; D * pd; 
        D d(4); d.Fun(); 
        pb = new B(2); pd = new D(8); 
        pb -> Fun(); pd->Fun(); 
        pb->Print (); pd->Print (); 
        pb = & d; pb->Fun(); 
        pb->Print(); 
        return 0;
    }

    样例输入

    样例输出

    D::Fun
    B::Fun
    D::Fun
    nBVal=2
    nBVal=24
    nDVal=8
    B::Fun
    nBVal=12

    来源Guo Wei

     1 class D:public B{
     2 private:
     3     int nDVal;
     4 public:
     5     D(int n):B(3*n){nDVal=n;}
     6     void Fun(){
     7         cout<<"D::Fun"<<endl;
     8     }
     9     void Print(){
    10         B::Print();
    11         cout<<"nDVal="<<nDVal<<endl;
    12     }
    13 };
    View Code

    B:Fun和Do

    描述

    程序填空输出指定结果

    #include <iostream> 
    using namespace std;
    class A { 
        private: 
        int nVal; 
        public: 
        void Fun() 
        { cout << "A::Fun" << endl; }; 
        void Do() 
        { cout << "A::Do" << endl; } 
    }; 
    class B:public A { 
        public: 
        virtual void Do() 
        { cout << "B::Do" << endl;} 
    }; 
    class C:public B { 
        public: 
        void Do( ) 
        { cout <<"C::Do"<<endl; } 
        void Fun() 
        { cout << "C::Fun" << endl; } 
    }; 
    void Call(
    // 在此处补充你的代码
    ) { 
        p.Fun(); p.Do(); 
    } 
    int main() { 
        C c; 
        Call( c); 
        return 0;
    }

    样例输入

    None

    样例输出

    A::Fun 
    C::Do 
    

    来源

    Guo Wei

    B& p
    View Code

    C:这是什么鬼delete

    描述

    程序填空输出指定结果

    #include <iostream> 
    using namespace std;
    class A 
    { 
    public:
        A() { }
    // 在此处补充你的代码
    }; 
    class B:public A { 
        public: 
        ~B() { cout << "destructor B" << endl; } 
    }; 
    int main() 
    { 
        A * pa; 
        pa = new B; 
        delete pa; 
        return 0;
    }

    样例输入

    样例输出

    destructor B
    destructor A
    

    来源

    Guo Wei

    1 virtual ~A(){
    2         cout << "destructor A" << endl;
    3     }
    View Code

    D:怎么又是Fun和Do

    描述

    程序填空输出指定结果

    #include <iostream>
    using namespace std;
    class A {
        private:
        int nVal;
        public:
        void Fun()
        { cout << "A::Fun" << endl; };
        virtual void Do()
        { cout << "A::Do" << endl; }
    };
    class B:public A {
        public:
        virtual void Do()
        { cout << "B::Do" << endl;}
    };
    class C:public B {
        public:
        void Do( )
        { cout <<"C::Do"<<endl; }
        void Fun()
        { cout << "C::Fun" << endl; }
    };
    void Call(
    // 在此处补充你的代码
    ) {
        p->Fun(); p->Do();
    }
    int main() {
        Call( new A());
        Call( new C());
        return 0;
    }

    样例输入

    样例输出

    A::Fun
    A::Do
    A::Fun
    C::Do
    

    来源

    Guo Wei

    A*p
    View Code
    注定失败的战争,也要拼尽全力去打赢它; 就算输,也要输得足够漂亮。
  • 相关阅读:
    Win7+Ubuntu11.10(EasyBCD硬盘安装)
    hdu 3661 Assignments
    hdu 1128 Self Numbers
    CF 152 B. Chilly Willy
    hdu 1754 I Hate It
    A survey of wireless network simulation and/or emulation software for use in higher education
    How to Fix Packet Loss: Causes, Simple Solutions & Top Tools
    getchar函数
    C++“左值”和“右值”
    stdio.h中的stdio
  • 原文地址:https://www.cnblogs.com/yalphait/p/8663509.html
Copyright © 2020-2023  润新知