C++多态与虚函数简单介绍

多态:
 子类中对父类已有成员函数进行重新定义(返回类型和参数不变,只是改变函数的

内部代码实现方式, 否则就是重载而非多态), 并加上virtual声明为虚函数,从

而形成多态, 在调用此系列成员函数时由对象所属的类自动来区别调用哪个函数.如

下虚函数的实现:

 class A
 {
    public:
       virtual int getAge()
       {
       }

 }

 class B :public A
 {
    public:
        virtual int getAge()
        {
        }
  }


有关虚函数限制:
1) 只有类的成员函数才能成为虚函数
2) 静态成员不能是虚函数, 因为它不受限于具体对象,静态成员属于整个类,它

不属于某个具体的对象。
3) 内联函数不能是虚函数, 因为它不能在运行中动态确定其位置,内联函数在编

译时就确定了函数的调用地址。
4) 构造函数不能时虚函数, 因为构造时对象还是一片未定型的空间,构造函数执

行的时候对象还是未确定的。
5) 析构函数可以是虚函数, 而且通常声明为虚函数, 如基类对象和子类对象以不

同方式申请了堆空间后:
   void finishWithObject(Base *pHeapObject)
   {
       //..
       delete pHeapObject;
   }

   pHeapObject是传递过来的一个对象指针, 它或者指向基类对象或指向子类对象

。 在执行delete pHeapObject时, 要调用析构函数,但是执行基类的析构函数?

还是执行子类的析构函数? 将析构函数声明为虚的,就可以解决这个问题。程序会

根据pHeapObject具体的类型来决定到底是调用父类还是子类的析构函数。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值