OOP C++, virtual functions and new operator
===

I have to write definition of the code below. I undarstand some basics of OOP Cpp, I know what is  `*x` or `&x`, but that's not enough... The main fact is that i cant understand line `B* p = new D, m, *k;` i cant understand what `m` and `*k` stand for.

    class B{
      public: 
        virtual void msg(){cout<<"classB ";}
    };
    class D : public B{
       public: 
         virtual void msg(){cout<<"classD ";}
    };
    int main() 
        {
           B* p = new D, m, *k;
           p->msg(); k=&m; k->msg();
            . . .
        }

Help, if you can explain how (and **why** so) this code will work.

thanks, for your time.