Sign-up....

多态的问题

为什么用typeid(*p).name()查看*p是一个派生类的对象,在调用p->read()函数还是会调用父类的?

父类和派生类的类定义都是:

virtual void read(std::ifstream &fs);

[113 byte] By [msdn] at [2007-8-14 13:02:46]
# 1 Re: 多态的问题

调用:

examArray[index] = new PaperExam;

Exam *p = examArray[index];

std::cout << typeid(*p).name() << std::endl; //这里输出class PaperExam

p->read(in); //这里执行Exam类的read函数。。

yanransoft at 2005-5-13 20:47:28 >
# 2 Re: 多态的问题

virtual void read(std::ifstream &fs);

virtual void read(std::ifstream fs);

--------

基类和派生类参数不一致嘛

zhousqy at 2005-5-13 21:12:01 >
# 3 Re: 多态的问题

基类和派生类参数不一致,找不到相应的派生类方法,所以调用的是基类的。

zhousqy at 2005-5-13 21:14:21 >
# 4 Re: 多态的问题

是我粗心。。谢谢!

yanransoft at 2005-5-13 21:18:53 >

C/C++

All Classified