C++类函数问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:45:45
用C++编程实现哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义spark()成员函数,基类中定义为虚函数。再定义一个Dog类的对象,调用spark函数.观察程序的运行结果.在线等~哪位达人帮忙解下~

class Mammal
{
public:
virtual void spark(){ cout << "Mammal::spark()" << endl; }
};

class Dog : public Mammal
{
public:
void spark() { cout << "Dog::spark()" << endl; }
};

int main()
{
Mammal* pMammal = new Mammal;
pMammal->spark();

delete pMammal;

pMammal = new Dog;
pMammal->spark();

delete pMammal;

return 0;
}

// 随手写的,没有调试:)

运行结果是:派生类因为从新写了在虚函数,所以调用派生类的函数。
按照上面的代码,应该输出:
cout << "Mammal::spark()" << endl;
cout << "Dog::spark()" << endl;