练习18.23:
(a):允许
(b):允许
(c):允许
(d):允许
练习18.24:
714页的代码如下
Bear *pb = new Panda("ying_yang");
pb->print();
pb->cuddle();
pb->highlight();
delete pb;
如果换成ZooAnimal,则:
ZooAnimal *pb = new Panda("ying_yang");
pb->print();//调用Panda::print
pb->cuddle();//调用Panda::cuddle
pb->highlight();//错误,ZooAnimal没有该接口
delete pb;//调用Panda::~Panda
练习18.25:
(a):通过基类指针Base1*调用虚函数print,使用MI::print
(b):通过基类指针D1*调用虚函数print,使用MI::print
(c):通过基类指针D2*调用虚函数print,使用MI::print
(d):首先调用MI的析构函数,再调用Base2的析构函数
(e):首先调用MI的析构函数,再调用D1的析构函数
(f):首先调用MI的析构函数,再调用D2的析构函数