定义一个哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义 Speak()成员函数,基类中定义为虚函数,定义一个Dog类的对象,调用Speak函数,观察运行结果

class Mammal
{
public:
Mammal(){cout<<"Mammal"< virtual void speak(){}
virtual ~Mammal()
{
cout<<"~Mammal::speak()"< }
};


class Dog:public Mammal
{
public:
Dog(){cout<<"Dog"< virtual void speak()
{
cout<<"Dog::speak"< }
~Dog()
{
cout<<"~Dog::speak()"< }
};


void main()
{
Mammal *p;
p=new Dog;
p->speak();
//(*p).speak();
delete p;
p=NULL;

}



运行结果:

定义一个哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义 Speak()成员函数,基类中定义为虚函数,定义一个Dog类的对象,调用Speak函数,观察运行结果_第1张图片


如若基类的析构函数不写关键字virtual,则只会调用基类的析构函数,不会调用派生类的析构函数

你可能感兴趣的:(C++)