实现多态--虚函数

上一篇 / 下一篇  2007-11-27 15:38:51 / 个人分类:c++

多态是只在 派生类 中重新定义 基类中的成员函数.可以通过 虚函数 来实现多态...

在 基类中需要被 派生类重新定义的 成员函数前 加上 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;
}

 

 

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar