C++中关于多态的有关问题

C++中关于多态的问题class Base{public:virtual void display() const{ std::cout I am Base class !

C++中关于多态的问题

class Base
{
public:
virtual void display() const
{ std::cout << "I am Base class !" << std::endl; }
virtual ~Base(){}
};
class Derive: public Base
{
public:
virtual void display()
{ std::cout << "I am Derive class !"<< std::endl; }
virtual ~Derive(){}
};
int main()
{
Base* pBase = new Derive();
Derive* pDerive = new Derive();
pBase->display();
pDerive->display();
delete pBase;
delete pDerive;
return 0;
}


程序输出结果是什么?
为什么会这样?
调试了一遍,也没看明白怎么回事
[解决办法]
#include <iostream>

class Base
{
public:
virtual void display() const
{ std::cout << "I am Base class !" << std::endl; }
virtual ~Base(){}
};

class Derive: public Base
{
public:
virtual void display() const
{ std::cout << "I am Derive class !"<< std::endl; }
virtual ~Derive(){}
};

int main()
{
Base* pBase = new Derive;
Derive* pDerive = new Derive();
pBase->display();
pDerive->display();
delete pBase;
delete pDerive;
return 0;
}

[解决办法]
函数的参数是编译的时候,搞定的,静态的。
虚函数是运行时才决定的, 属于动态的。

pBase->display()的时候,类型是基类,所以给的默认值是基类的,等运行的时候,因为虚函数表的原因,调用派生类的display,所以才这样。 
    最好不要这样搞!!!!!