C++基本概念学习

来源:互联网 发布:网络编辑招聘 编辑:程序博客网 时间:2024/06/10 10:35

虚函数

虚函数 基类中的一类成员函数;允许子类根据自己的需要重新定义。

纯虚函数 在父类中不提供具体实现的虚函数。
//文件:Shapes.h

#ifndef _SHAPE_H
#define _SHAPE_H

#include <iostream>
using namespace std;

class Shape
{
public:
     //纯虚函数,没有实际的函数定义
     virtual void WhatAmI()=0;
};

class Pyramid:public Shape
{
public:
     void WhatAmI() {cout<<"/n I am a pyramid./n";}

};

class Sphere:public Shape
{
public:
     void WhatAmI() {cout<<"/nI am a sphere./n";}
};

class Cone:public Shape
{
public:
     void WhatAmI() {cout<<"/nI am a cone./n";}
};

class Box:public Shape
{
public:
     void WhatAmI() {cout<<"/n I am a box./n";}
};

#endif


再声明一个指向基类的指针,并把一个派生类的地址赋给该指针(这在C++中是合法的),就可以通过这个指针来访问派生类中的虚函数。
//文件:VirtualShapesDriver.cpp

#include <iostream>
using namespace std;
#include "Shapes.h"

int main()
{
cout<<"/n The Virtual Shapes Program"<<endl;
    
     Shape *basePtrs[4];   //创建一个基类指针数组

     Sphere MySphere;
     Pyramid MyPyramid;
     Cone MyCone;
     Box MyBox;

     basePtrs[0]=&MyCone; //将子类的地址保存到基类指针数组中
     basePtrs[1]=&MySphere;
     basePtrs[2]=&MyPyramid;
     basePtrs[3]=&MyBox;

     //通过遍历数组可以访问每个对象的WhatAmI函数
     for(int i=0;i<4;++i)
     {
          basePtrs[i]->WhatAmI();

     }

     cout<<"/n Very cool,don't you think?"<<endl;
     return 0;
}

嘿嘿,今天终于知道什么是虚函数了。

 

原创粉丝点击