niusouti.com

下列程序段不会发生二义性的是_。A.int fun(double p){…;} float fun(float p){…;} int x; x=fun(0);B.int fun(float p){…;}float fun(unsigned p){…;} int x; x=fun(0);C.int fun(int i,int j=2){…;}float fun(int i){…;} coutfun(5);D.int fun(int i=2,int j=2){…;} int fun(int *p){…;} c

题目
下列程序段不会发生二义性的是_。

A.int fun(double p){…;} float fun(float p){…;} int x; x=fun(0);

B.int fun(float p){…;}float fun(unsigned p){…;} int x; x=fun(0);

C.int fun(int i,int j=2){…;}float fun(int i){…;} coutfun(5);

D.int fun(int i=2,int j=2){…;} int fun(int *p){…;} coutfun(5);


相似考题
更多“下列程序段不会发生二义性的是_。 ”相关问题
  • 第1题:

    下列选项中不会引起二义性的宏定义是( )。A.defineS(x)x*xB.defineS(x)(x)*(x)SXB

    下列选项中不会引起二义性的宏定义是( )。

    A.#defineS(x)x*x

    B.#defineS(x)(x)*(x)

    C.#defineS(x)(x)*x

    D.#defineS(x)(x*x)


    正确答案:D
    本题考查参数的宏替换。为避免二义性有些参数表达式必须加括号,否则在实参表达式替换时,会出现错误。例如x为(m+n)时替换A:m+n*m+n,所以选项D最符合条件。

  • 第2题:

    对于下列程序段,没有二义性的表达式是() class A {public: int f(); }; class B {public: int g(); int f(); }; class C:public A,public B {public : int g(); h(); }; C obj;

    A.obj.f()

    B.obj.A::g()

    C.obj.B::f()

    D.obj.B::h()


    ass C:public A,public B{ public : int g( ) ; h( ) ; } ;

  • 第3题:

    从下列选项中选择不会引起二义性的宏定义是______。

    A.#define PLUS(a) a*a

    B.#define PLUS(a) (a)*(a)

    C.#define PLUS(a) (a*a)

    D.#define PLUS(a) ((a)*(a))


    #define POWER(x) (x)*(x)

  • 第4题:

    有如下程序: class Base1 { public: int a; void b() { return}; void c(float) { a=float;} }; class Base2 { public: void b(){} void c(){} private: int a; }; class Derived:public Basel,public Base2 { public: void b(){} }; void main() { Derived obj; obj.a=1; //① obj.b(); //② obj.c(10); //③ } 下面各项对语句①②③的描述中,正确的是( )。

    A.语句①②③都有二义性

    B.语句①③有二义性,②没有二义性

    C.语句①有二义性,②③没有二义性

    D.语句①②有二义性,③没有二义性


    正确答案:B
    解析:C++中二义性问题的检查在访问控制权限或类型检查之前进行,即访问权限的不同或类型不同不能解决二义性问题。所以语句①③有二义性。由于Derived中又重新定义了同名成员函数b(),所以b()函数的调用就不存在二义性问题。

  • 第5题:

    3、对于下列程序段,没有二义性的表达式是() class A {public: int f(); }; class B {public: int g(); int f(); }; class C:public A,public B {public : int g(); h(); }; C obj;

    A.obj.f()

    B.obj.A::g()

    C.obj.B::f()

    D.obj.B::h()


    ass C:public A,public B{ public : int g( ) ; h( ) ; } ;