美文网首页
方法重载

方法重载

作者: MinoyJet | 来源:发表于2017-04-13 19:46 被阅读0次

方法重载

21. 辨别方法重载

在调用重载方法时,编译器会根据方法的参数个数、参数类型和方法属性(const 方法),来区分不同的方法,这 3 项也被称为方法的签名。这里需要注意的是方法的签名不包含方法的返回值,也就是说方法返回值类型不作为区分重载方法的标记。

22. 方法重载的歧义现象

下面代码有何错误?

class CCalc
{
public:
    intAdd(int one, int two) //重载 Add 方法
    {
        cout<<"第一个版本的 Add 被调用" << endl;
        return one + two;
    }
    intAdd(int one, int two)const //重载 Add 方法
    {
        cout<<"第二个版本的 Add 被调用" << endl;
        return one + two;
    }
    doubleAdd(int one, int two) //重载 Add 方法
    {
        cout<<"第三个版本的 Add 被调用" << endl;
        return one + two;
    }
};
int main(int argc, char* argv[])
{
    CCalc calc;
    calc.Add(10, 15); //调用重载方法
    return 0;
}

本题中实现了 3 个重载版本的 Add 方法。表面上看来第一个重载方法和第二个方法原型很相似,问题可能出在这里。其实不然,这是出题人设计的一个陷阱。问题出现在第一个重载方法和第三个重载方法,它们的区别是方法的返回值类型不同。在进行方法重载时以参数个数、参数类型和方法属性(const 方法)来区分不同的方法,而不以返回值来区分。

第三个重载版本的 Add 函数出现错误。它与第一版本的 Add 函数会出现歧义。在执 calc.Add(10, 15); 语句时编译器无法区分调用第一个还是第三个版本的 Add 函数。

相关文章

  • C#多态的表现-方法重载,方法重写以及密封类的特点

    方法重载 方法重载:构造函数就属于特殊的方法重载 方法重载:是指同一个类中相同方法的不同行为 方法重载的特点: 1...

  • OOP多态和密封类

    学习oop多态 1.方法重载 2.方法重写 3.里氏替换原则 方法重载:构造函数属于特殊的方法重载 方法重载是指同...

  • 方法的定义与使用(方法重载)

    方法重载 方法重载指的是方法名称相同,参数的类型或个数不同。范例:实现方法重载 范例:观察如下程序

  • 方法重载与方法重写(@Overload @Override)

    java方法重载和方法重写(方法覆盖)的区别: 方法重载: Overload 方法重写: Override 批判,...

  • 方法重载

    方法重载 21. 辨别方法重载 在调用重载方法时,编译器会根据方法的参数个数、参数类型和方法属性(const 方法...

  • Java重载

    重载(Overlaod):表示两个或多个方法名字相同,但方法参数不同。 代码: 普通方法重载 方法中也可以嵌套重载...

  • c++快速入门7:类和对象B:重载、继承和重写

    重载方法(Overloading) 就像函数重载,类方法也可以被重载--包括构造方法。 继承类的属性 派生类除了自...

  • OOP(多态,重载,重写,虚方法,密封类)

    多态 学习OOp多态*1.方法重载*2.方法重写*3.里氏替换原则**方法重载:构造函数就属于特殊的方法重载*方...

  • Java面试题

    1、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分? 答:方法的重载...

  • JVM方法调用

    方法重载和方法重写多态是面向对象程序设计的重要特性,方法重载和方法重写是Java语言实现多态的主要形式。方法重载指...

网友评论

      本文标题:方法重载

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