多态是只在 派生类 中重新定义 基类中的成员函数.可以通过 虚函数 来实现多态...
在 基类中需要被 派生类重新定义的 成员函数前 加上 virtual.
使用方法:定义 基类类型的指针,并且指向子类型声明的数据成员..从而实现多态.
P.S.:
1.虚函数必须是 基类的成员函数 ; 子类的 成员函数 或者 友元函数;
2.析构函数一般都定义为虚函数..
实例:
// 实现多态.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
///
class Animal
{
public:
virtual void sound()
{
cout<<"no sound ....."<<endl;
}
};
////
class Dog:public Animal
{
public:
void sound()
{
cout <<"bow-wow-...bow-wow..."<<endl;
}
};
////
class Cat:public Animal
{
public:
void sound()
{
cout <<"miaow-...-miaow"<<endl;
}
};
////
void animal_sound(Animal *pAnimal)
{
pAnimal->sound();
}
////main()
int _tmain(int argc, _TCHAR* argv[])
{
Animal *pAnimal = new Animal();
Animal *pDog = new Dog();
Animal *pCat = new Cat();
pAnimal->sound();
pDog->sound();
pCat->sound();
cout<<endl;
animal_sound(pAnimal);
animal_sound(pDog);
animal_sound(pCat);
delete pAnimal;
delete pDog;
delete pCat;
getchar();
return 0;
}
实例2:
// 实现多态2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
/////
class Base
{
public:
Base()
{
cout<<"open in Base"<<endl;
}
virtual ~Base()
{
cout<<"release in Base"<<endl;
}
};
////
class Derived:public Base
{
public:
Derived()
{
cout<<"open in Derived"<<endl;
}
virtual ~Derived()
{
cout<<"release in Derived"<<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Base *b = new Derived();//Base --> Derived
delete b; //~Derived -> ~Base
getchar();
return 0;
}