小白求助c++中一些关于多态的问题

1.基类的析构函数不是虚函数,在析构派生类的时候基类会不会被析构
2.基类的析构函数不是虚函数,在析构基类类的时候派生类会不会被析构
3.虚基类的析构函数是不是虚函数?

1.无论基类的析构函数是不是虚函数,析构派生类的时候都会调用基类析构函数
2.如果从派生类被引用为基类然后析构,那么会导致只调用基类析构函数,而不调用派生类析构函数,所以基类析构函数应定义为虚函数
3.虚基类是解决多重继承时基类被多次继承导致的冲突的(如BC类继承于A,D类多重继承于BC,则基类A出现了两次),与虚函数无关,虚基类的析构函数依然应该手动加上virtual关键字

楼上说的不错
对于第二条基类的析构函数不是虚函数,析构基类时,派生类的析构函数当然不会被调用;当基类的析构函数是虚函数时,也只有派生类的指针指向基类时,当析构函数调用时,也是先调用派生类的析构函数在调用基类的析构函数。