最赞回答 / 慕UI8711183
1、虚函数表不是只存储虚函数的地址吗? 怎莫理解您说的 “类对象的头部即虚函数表所在” 这句话。虚函数表存放的是虚函数的地址,虚函数表指针存放的是虚函数表的首地址,在内存中,子类对象Circle头部(即前四个字节)存放的是虚函数表指针,父类指针p指向子类Circle,也就是说把子类Circle的首地址赋值给p,根据p就可以找到子类Circle的虚函数表指针,依次找到虚函数表,再找到虚函数。2、没有虚函数,就没有虚函数表,子类对象Circle头部(即前四个字节)就没有虚函数表指针,就没法调用子类对象Circ...
2016-03-18
最新回答 / Sacrt
是不是要初始化啊,FighterPlane里面好像没有m_strCode的数据成员,在Plane才有。改成“FighterPlane(string code):Plane(code)”试试
2016-03-12
已采纳回答 / topband
肯定不是这样的。1、使用virtual会产生一个虚拟指针表,要维持这个表,便额外加大了系统的开销。2、也不是所有的成员函数都需要实现多态的,总有些函数实现的功能意义时固定的,比如说加减乘除3、虚继承无非是为了避免诸如菱形继承的情况,在我们构建类图的时候,就需要考虑到这些问题,如果能不用虚继承,就不用咯。综上,应该是能不用就不用,C++就是以号称节省资源,运行效率高的。如果在写程序的时候,使得消耗过多的系统资源,便失去了这门语言高效的意义了。那还不如直接用一些新兴的语言如GO,SCALA之类的了。
2016-03-09
最赞回答 / 计量赵子龙
这个网站的判断系统没有专业的oj那么严谨,你要是想到网上做题,我推荐你一个网站http://acm.hdu.edu.cn/listproblem.php?vol=1
2016-03-09
已采纳回答 / flurry
IndexException() 可以类比new IndexException()实际上前者是抛出一个类,后者是申请一个类。从老师的视频中可以看到,该类是使用默认构造函数,即没有初始化参数。所以IndexException后加(),内无参数,如果有参数,那么()内应该填写相应初始化参数值。
2016-03-02
最赞回答 / 小肚腩era
如果父类定义了一个虚函数-calcArea,子类继承,但子类没有去重新定义,那么,就会有2张虚函数表,并且,父类与子类的虚函数表指针地址不同,但都指向同一个函数指针,即父类中的虚函数-calcArea.
2016-02-21