已采纳回答 / 苏布达
父类指针指向子类对象,通过父类指针只能寻址到从父类继承到的成员函数与数据成员,子类扩展的将会被截断。但是,如果将父类中同名函数设置为虚函数,创建子类对象时将会创建子类自有的虚函数表,虚函数表指向的成员函数将覆盖父类中的同名函数。
2018-09-28
最新回答 / weixin_慕雪0498266
抽象类包含接口类,区别在于接口类只含有纯虚函数、无其他成员函数、构造函数、析构函数、数据成员;而抽象类在含有纯虚函数以外,可以含有成员函数、数据成员、构造函数、析构函数。
2018-09-19
最赞回答 / 大叶_
Coordinate 要放在前面定义,这样shape才能调用定义Coordinate的构造函数要写成Coordinate::Coordinate(int _x, int _y)你的class Coordinate打错了
2018-09-12
最新回答 / qq_raining
因为指针在定义的时候就指向了circle的对象,所以指针一直是指向circle对象内存区域的,因而delete的时候会找到circle对象的虚函数表,进行析构。然后父类shape再进行析构。
2018-09-12
最新回答 / 慕虎8274556
throw和catch后面需要接数据类型,并且throw的类型需要和catch数据类型对应。string ()是<string>库中的一个函数,它实现了创建一句字符串的功能。
2018-08-08
已采纳回答 / 慕粉4325388
这么说吧,之所以进行这个转换是因为使用父类Flyable指针通过虚函数实现机制我们可以动态的是实现同名的虚函数,但是对于子类Bird中的非虚函数(觅食函数),要想调用则必须是Bird,所以要进行强制类型转换。
2018-08-07