美文网首页
函数的覆盖,隐藏,重载

函数的覆盖,隐藏,重载

作者: 悟坑_a80b | 来源:发表于2019-01-22 22:47 被阅读0次

    函数的覆盖

    1.基类函数必须是虚函数

    2.发生覆盖的两个函数必须分别位于基类和派生类中

    3.函数名称与函数列表必须完全相同

    函数的隐藏

    1.派生类的函数与基类的函数完全一样(函数名和参数列表都一样),但基类的函数没有使用virtual关键字,此时基类的函数将被隐藏而不是覆盖

    2.派生类的函数与基类的函数同名,但参数不同,此时,无论基类的函数是否使用virtual关键字,基类的函数都将被隐藏

    函数的重载

    1.同一个类中,定义的构造函数名相同,构造函数的参数类型,参数个数不同,就构成了函数的重载

    2.如果只有函数的返回类型不同,是无法构成函数的重载的,例如

        (1)void output();

        (2)long output();

    3.要注意函数带有默认参数的情况,例如

        (1)void output(int a, int b=100);

        (2)void output(int a);

    当我们调用output(5);时,两种情况的output都可以被调用,此时出现歧义,因此,此时不能构成函数的重载

    总结

    函数的覆盖和隐藏 是发生在基类和派生类中的,而函数的重载是发生在同一个类中的,不知道这样理解是否片面,有机会询问一下大神,确认一下再更正!

    加强一下:

    函数的覆盖发生在基类和派生类之间,且函数必须完全相同,并且都是虚函数。不是这种情况的,就是函数的隐藏了。

    相关文章

      网友评论

          本文标题:函数的覆盖,隐藏,重载

          本文链接:https://www.haomeiwen.com/subject/lzkdjqtx.html