最近对多态的实现机制比较感兴趣,本文从C++内存模型角度去看待多态的实现机制。实例如下:
#include<iostream>
#include <string>
#include <stdio.h>
using namespace std;
class Animal
{
public:
Animal(int a = 1, int b = 2)
{
this->a = a;
this->b = b;
}
virtual void sleep(int minutes = 30)
{
cout<<"animal sleep "<<minutes<<" minutes"<<endl;
}
virtual void breathe()
{
cout<<"animal breathe"<<endl;
}
virtual void eat()
{
cout<<"animal eat"<<endl;
}
private:
int a;
int b;
};
class Fish:public Animal
{
public:
Fish(int c) {
this->c = c;
}
virtual void breathe()
{
cout<<"fish breathe"<<endl;
}
virtual void sleep(int minutes = 50)
{
cout<<"fish sleep "<<minutes<<" minutes"<<endl;
}
virtual void swim(void) //Fish子类特有函数
{
cout<<"fish swim"<<endl;
}
private:
int c;
};
int main()
{
typedef void (*Fun1)(void); //指向breathe()函数
Fun1 pFun1 = NULL;
typedef void (*Fun2)(int)