码迷,mamicode.com
首页 > 其他好文 > 详细

18.03.28 多态作业

时间:2018-03-28 15:35:04      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:opened   call   bsp   分享   3.2   names   clu   turn   pac   

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

 

18.03.28 多态作业

标签:opened   call   bsp   分享   3.2   names   clu   turn   pac   

原文地址:https://www.cnblogs.com/yalphait/p/8663509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!