显然和你class d:public b ,public c,这个顺序有关

解决方案 »

  1.   

    问题是virtual public c这样继承的话结果怎样解释?
      

  2.   

    我把我的程序贴出来,供大家看看,你的程序我编译都通不过。                       #include "iostream.h"
                            class a{
                            public:
                              ~a(){cout<<"a-";}
                              a(){cout<<"a+";}
                            };
                            
                            class b:virtual public a{
                            public:
                              ~b(){cout<<"b-";}
                              b(){cout<<"b+";}
                            };
                            
                            class c:virtual public a{
                            public:
                              ~c(){cout<<"c-";}
                              c(){cout<<"c+";}
                            };
                            
                            class d: public b , public c
                            //如果写成public b,virtual public c的话结果变成-----:  d b c a 
                            {                               
                            //为什么!!!!????
                            public:
                              ~d(){cout<<"d-";}
                              d(){cout<<"d+";}
                            };
                            
                            void main()
                            {
                            d ning;
                            }