细说C++覆盖方法和重载方法

本文通过实例解析了方法覆盖与方法重载的区别,包括参数签名、返回类型及其实现方式。

       很多初学者朋友可能都傻傻分不清覆盖方法和重载方法的区别是什么,那么小雨今天就以实例来给朋友们讲解一下。

       首先说覆盖方法,让我们看下面的例子:

class Animal
{
public:
          void move();
}

class Pig : Animal
{
public:
           void move();
}

class Bird : Animal
{
public:
         void move();
}

void Animal :: move()
{
         std::cout << "我会动哦\n";
}

void Pig :: move()
{ 
         std::cout << "我会跑哟\n";
}

void Bird :: move()
{ 
          std::cout << "我会飞呢\n";
}   
 


       相信各位看完这个程序就明白的差不多了,我们声明Animal这个类,子类Pig和Bird都继承自Animal类,猪和鸟动的方式自然不同,所以要对父类方法进行覆盖,首先在子类中将要覆盖的方法再声明一次,再实现一次,这就是方法覆盖。

       而重载方法则不同,我们对上面的例子中的父类做一下修改:

class Animal
{
public:
          void move();
          void move(int movCount);
 }
void Animal :: move()
{
          std::cout << "我会动哦\n";
}

void Animal :: move(int movCount)
{
          std::cout << "我移动了"<< movCount <<"这么远哦\n";
}




     

        上述就是方法重载,即同一个函数名,参数不同,实现不同的功能,move(int movCount)可


以显示出移动的距离。

       

那我们现在来做总结:


·方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致。


·方法覆盖要求返回类型必须一致,而方法重载对此不做限制。



谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值