0
    # include "stdafx.h"
    # include <iostream>
    #include <ctype.h>
    using  namespace std;
    class a
    {
    protected:
        int d;
    public: 
        virtual void assign(int A) = 0;
        int get();
    };

    class b : a
    {   
        char* n;
    public:
        b()
        {
        n=NULL;
        }
        virtual ~b()
        {
        delete n;
        }
        void assign(int A)
        {
            d=A;
        } 
        void assignchar(char *c)
        {
            n=c;
        }
        int get()
        {
            return d;
        }
        char* getchart()
        {
                return n;
        }
    };

    class c : b
    {
        b *pB;
        int e;
    public:
        c()
        {
                pB=new b();
        }
        ~c()
        {
                delete pB;
        }
        void assign(int A)
        {
                e=A;
                pB->assign(A);
            }
        int get()
        {
            return e;
        }
        b* getp()
        {
            return pB;
        }
    };

    int _tmain(int argc, _TCHAR* argv[])
    {
                    c *pC=new c();
                    pC->assign(10);
                    b *p=pC->getp();
                    p->assignchar("a");
                char *abc=p->getchart();
                delete pC;
                    cout<<*abc<<endl;
                getchar();
    }

私はC ++の初心者で、この時点に到達したときに実験していました。VS2010 からメモリ破損メッセージが表示される理由がわかりません。問題をより小さなビットに分割することで、より高いレベルの問題を再現しようとしています。

4

2 に答える 2