c++虚函数经典例子

来源:互联网 发布:网络专题策划方案 编辑:程序博客网 时间:2024/06/11 04:59

c++虚函数经典例子演示

c++博大精深,封装,继承,多态是c++的三大特征,c++很强大,但是强大的东西理解起来就是要比不强大的难一点,所以现在看看

c++的多态:

多态条件:

1.必须是公有继承。

2.必须是虚函数

一个好的程序要对修改封闭,对扩展开放,虚函数就能很好的解决这个问题,

基类的指针指向子类的对象并调用子类的同名函数,要实现这种效果,就得用虚函数

关键字:virtual 

虚函数的注意点:

1.必须是普通成员函数(可以是常成员,不能是静态成员,不能使全局函数)

2.内联函数不会是虚函数

3.构造函数不能为虚函数(析构函数一般声明为为虚函数)

经典例子:

 1 #include  2 3using std::cout; 4using std::cin; 5using std::endl; 6 7// 基类 8class Fruit{ 9public:10virtualvoid print(){11         cout<< "Fruit"<<endl;12    }13};1415class Banana: public Fruit{    // 一定要共有继承16public:17void print(){            // 此处可省略virtual关键字,但是函数原型要与Fruit中虚函数 void print(); 完全一致18         cout<< "Banana"<<endl;19    }20};2122class Apple: public Fruit{23public:24void print(){25         cout<< "Apple"<<endl;26    }27};2829class Pear: public Fruit{30public:31void print(){32         cout<< "Pear"<<endl;33    }34};3536class Peach: public Fruit{37public:38void print(){39         cout<< "Peach"<<endl;40    }41};4243int main(void)44{45    Banana ban;46    Apple ape;47    Pear par;48    Peach pch;49     Fruit *frt[] = {&ban, &ape, &par, &pch};5051for(int i = 0; i < 4; i++)52         frt[i]->print();        // 一个基类指针,分别调用不同的子类对象(动态多态)5354     system("PAUSE");55return0;56 }