c++mooc第六章小测

(红色为补充代码)

001:看上去像多态

#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;} 
};
//补充代码
class D:public B
{
private:
    int nDVal;
public:
    D(int nDval_) :nDVal(nDval_),B(3*nDval_){};

    void Fun()
    {
        cout << "D::Fun" << endl;
    }

    void Print()
    {
        B::Print();
        cout << "nDVal=" << nDVal << endl;
    }

};

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;
}

002: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(
//补充代码
B &p ) { p.Fun(); p.Do(); } int main() { C c; Call( c); return 0; }

003:这是什么鬼delete

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

004:怎么又是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(
//补充代码 A*p ) { p->Fun(); p->Do(); } int main() { Call( new A()); Call( new C()); return 0; }
 
 

原文链接: https://www.cnblogs.com/gsqq/p/13152628.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    c++mooc第六章小测

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/356330

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午11:10
下一篇 2023年3月2日 上午11:10

相关推荐