Aimy

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

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

c++的多态:

多态条件:

1.必须是公有继承。

2.必须是虚函数

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

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

关键字:virtual 

虚函数的注意点:

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

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

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

经典例子:

 1 #include <iostream>
 2 
 3 using std::cout;
 4 using std::cin;
 5 using std::endl;
 6 
 7 // 基类
 8 class Fruit{
 9 public:
10     virtual void print(){
11         cout<< "Fruit" <<endl;
12     }
13 };
14 
15 class Banana: public Fruit{    // 一定要共有继承
16 public:
17     void print(){            // 此处可省略virtual关键字,但是函数原型要与Fruit中虚函数 void print(); 完全一致
18         cout<< "Banana" <<endl;
19     }
20 };
21 
22 class Apple: public Fruit{
23 public:
24     void print(){
25         cout<< "Apple" <<endl;
26     }
27 };
28 
29 class Pear: public Fruit{
30 public:
31     void print(){
32         cout<< "Pear" <<endl;
33     }
34 };
35 
36 class Peach: public Fruit{
37 public:
38     void print(){
39         cout<< "Peach" <<endl;
40     }
41 };
42 
43 int main(void)
44 {
45     Banana ban;
46     Apple ape;
47     Pear par;
48     Peach pch;
49     Fruit *frt[] = {&ban, &ape, &par, &pch};
50 
51     for(int i = 0; i < 4; i++)
52         frt[i]->print();        // 一个基类指针,分别调用不同的子类对象(动态多态)
53 
54     system("PAUSE");
55     return 0;
56 }
posted @ 2012-11-30 13:05  一只小小的菜鸟1  阅读(3742)  评论(1编辑  收藏  举报