重载 重写(覆盖) 隐藏

基本概念:

重载

在一个类中被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确   定调用哪个函数,重载不关心函数返回类型。

重写(覆盖):

其函数名,参数列表,返回值类型,所有都必须同基类中被重写的函数一致。只有函数体不同(返回值不同的协变返回类型也可以构成重载)。
两个方法分别位于派生类与基类
基类函数必须有 virtual 关键字,不能有 static ;子类方法有无virtual方法没影响。

隐藏

两个方法分别位于派生类与基类
函数名字相同,返回值可以不相同
参数不同,基类的函数不论有没 virtual 关键字都将被隐藏(注意只要同名函数,不管参数列表是否相同,基类函数都会被隐藏)
参数相同,但是基类函数没有 virtual关键字,那么基类的方法将被隐藏(注意和重写的区别)
#include <iostream>
using namespace std;

class Base
{
public:
    void fun(double ,int ){ cout << "Base::fun(double ,int )" << endl; }
};

class Derive : public Base
{
public:
    void fun(int ){ cout << "Derive::fun(int )" << endl; }
};

int main()
{
    Derive pd;
    pd.fun(1);//Derive::fun(int )
    pb.fun(0.01, 1);//error C2660: “Derive::fun”: 函数不接受 2 个参数

    system("pause");
    return 0;
}

函数重写(override)与协变返回类型(covariant return type)

const重载

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值