多态的问题
为什么用typeid(*p).name()查看*p是一个派生类的对象,在调用p->read()函数还是会调用父类的?
父类和派生类的类定义都是:
virtual void read(std::ifstream &fs);
为什么用typeid(*p).name()查看*p是一个派生类的对象,在调用p->read()函数还是会调用父类的?
父类和派生类的类定义都是:
virtual void read(std::ifstream &fs);
调用:
examArray[index] = new PaperExam;
Exam *p = examArray[index];
std::cout << typeid(*p).name() << std::endl; //这里输出class PaperExam
p->read(in); //这里执行Exam类的read函数。。
virtual void read(std::ifstream &fs);
virtual void read(std::ifstream fs);
--------
基类和派生类参数不一致嘛
基类和派生类参数不一致,找不到相应的派生类方法,所以调用的是基类的。
是我粗心。。谢谢!