更多“如果已经定义了方法intf(boolb,inti),则以下方法中,哪一个不是合法的重载方法()。A、doublef(boo ”相关问题
  • 第1题:

    在C++语言中,若类C中定义了一个方法int f(int a,int b),那么方法 (33)不能与该方法同时存在于类C中。

    A.int f(int x,int y)

    B.int f(float a,int b)

    C.float f(int x,float y)

    D.int f(int x,float y)


    正确答案:A
    本题考查的是面向对象程序设计中的函数名重载机制。在C++中允许在同一个作用域中的同一个函数名字对应着多个不同的函数实现,这种现象称为重载(overloading),这些函数被称为重载函数。每一个重载函数必须具有不同的函数签名,即函数参数的个数不同或者参数的类型不同。根据上述概念来解答试题(33)。在C++中有一类特殊的作用域:类作用域。类中所有的成员都具有类作用域。如果在类C的作用域中存在不止一个名字为f的方法,那么这些方法或者具有不同的参数个数,或者具有不同的参数类型。将4个备选答案依次与题干中给出的方法作比较,可以发现选项A给出的方法的名字、参数个数及参数类型都与题干中给出的方法相同,这就违背了函数名重载的原则,因此该方法不可能与题干中给出的方法共存于类C中。因此正确答案为A。

  • 第2题:

    5、Java程序中已经定义了void setLeg(int leg)方法,下面()是方法的重载。

    A.void setLeg();

    B.void setLeg(int a);

    C.void setLeg(int a,int b);

    D.void setLeg(double a);


    B

  • 第3题:

    在以下Java程序的方法中,两个方法之间属于方法重载的是()

    A.int f1(){} 和 int f1(int a){}

    B.void f1(int a){} 和int f1(int a){}

    C.void f1(){}和 int f1(int a){}

    D.int f1(int b, int a){} 和 int f1(int a, int b){}


    int f1(){} 和 int f1(int a){};void f1(){} 和 int f1(int a){}

  • 第4题:

    在C++语言中,若类C中定义了一个方法intf(int a,int b),那么方法不能与该方法同时存在于类C中。

    A.int f(int x,int y)

    B.int f(float a,int b)

    C.float f(int x,float y)

    D.int f(int x,float y)


    正确答案:A
    解析:该题其实考查的是形参和函数重载。编译器视函数“intf(inta,intb)”和“intf(intx,inty)”为同一个函数,尽管两者的形参名称不一样,编译器只管形参的类型是不是一样。在VC6.0中,若在同一个类中定义这两个函数,编译错误信息中会提示“memberfunctionalreadydefinedordeclared”,即成员函数已定义或声明了。对于在同一可访问区内(如同一个类中)被声明的几个具有不同参数列(参数的类型、个数、顺序不同)的同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制叫重载,重载不关心函数的返回值类型。这里,“重载”的“重”的意思不同于“轻重”的“重”,它是“重复”、“重叠”的意思。可见,B、C、D均与“intf(inta,intb)”构成重载。另外,值得特别强调的是,重载不关心函数的返回值类型,在同一个类中,也不允许“intf(inta,intb)”、“floatf(inta,intb)”两者同时存在,这两者不构成重载,编译器无法识别。

  • 第5题:

    有函数声明:int f(int x); 则以下()选项是正确的函数重载。

    A.double f(double x);

    B.double f(int x);

    C.int f(int );

    D.int f(int y);


    BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)) ;