C++笔记(三)--- 函数重载

目录

子类继承父类重载

类成员函数重载


继承和组合的三种方式请看我上一篇文章

C++笔记(二)--- 继承和组合-CSDN博客

子类继承父类重载

当子类继承父类之后,子类重新定义了一个和父类完全相同函数名称的函数时,会将父类所有相同函数名的函数覆盖掉


class person
{
public:
    person(){}
    void printf(){ cout << "This is person no parameter printf!" << endl;}
    void printf(string s} { cout << "This is person printf : " << s << endl;}
};


class student : public person
{
public:
    student():person(){}
    void printf(){ cout << "This is student no parameter printf!" << endl; }
};

int main(void)
{
    student s;
    s.printf();//正确,输出 This is student no parameter printf!
//    s.printf("Hello World!");    //报错,“school::printf”: 函数不接受 1 个参数
    //因为子类将父类所有的printf函数都屏蔽删除了,包括printf(string s);
}

类成员函数重载

重载函数需要注意两点

1.必须个数或对应位置参数至少有一项不相同
2.仅仅返回值不同不能作为重载判断依据
class A
{
public:
    void printf(int a){ cout << "a: " << a << endl; }
//  int printf(int a){ cout << "a:" << a << endl; }//报错, 重载函数与“void A::printf(int)”只是在返回类型上不同
    void printf(string s) { cout << "s : " << s << endl; }//正确,与第一个printf参数类型不同
    void printf(string s, int a) { cout << "s : " << s << "  a : " << a << endl; }//正确,与上一个printf参数个数不同
    void printf(int a, string s) { cout << "a : " << a << "   s : " << s << endl; } //正确,与上一条printf对应位置的参数类型不同
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值