单项选择题

有如下程序:   #include   usingnamespacestd;   classB{   public:   virtualvoidshow(){cout<<"B";}};   classD:publicB{   public:   voidshow(){cout<<"D";}   };   voidfun1(B*ptr){ptr->show();   }voidfun2(B&ref){ref.show();   }voidfun3(BB){b.show();   }   intmain(){   Bb,*p=newD;   Dd;   funl(p);   fun2(b);   fun3(d);   return0;   }   程序的输出结果是(  )。

A.BBB
B.BBD
C.DBB
D.DBD