对于下面程序,对p调用正确的是( )。 class A{ public:fun(int i){cout<<i<<endl;} }; main(){ A a; int k=0; void(A::*p)(int); p=A::fun; }A.a.p(k);B.*a.p(k)C.a.*p(k)D.a::*p(k)

题目

对于下面程序,对p调用正确的是( )。 class A{ public:fun(int i){cout<<i<<endl;} }; main(){ A a; int k=0; void(A::*p)(int); p=A::fun; }

A.a.p(k);

B.*a.p(k)

C.a.*p(k)

D.a::*p(k)


相似考题
更多“对于下面程序,对p调用正确的是( )。 class A{ public:fun(int i){cout<<i<<endl;} }; ”相关问题
  • 第1题:

    下列程序的运行结果为 include int i=0; class A { public: A( ) {i++;} }; void m

    下列程序的运行结果为

    #include<iostream.h>

    int i=0;

    class A {

    public:

    A( ) {i++;}

    };

    void main( )

    {

    A a,b [3] , * c;

    c=b;

    cout < < i < < endl;

    }

    A.2

    B.3

    C.4

    D.5


    正确答案:C
    解析:外部变量i实际上记录的是调用构造函数的次数。

  • 第2题:

    有如下程序 include using namespace std;int i=1;class Fun {public:static int i;i

    有如下程序 #include <iostream>using namespace std;int i=1;class Fun {public:static int i;int value(){ return i-1;}int value()const{ return i+1;}};int Fun:: i=2;int main() {int i=3;Fun fun1;const Fun fun2;______________________return ();}若程序的输出结果是:123

    A.cout<<fun1.value()<<Fun:: i<<fun2.value();

    B.cout<<Fun::i<<fun1.value()<<fun2.value();

    C.cout<<fun1. value()<<fun2.value()<<Fun:: i;

    D.cout<<fun2.value()<<Fun:: i<<fun 1.value();


    正确答案:A

  • 第3题:

    请将下列类定义补充完整。

    class Base{public:void fun(){cout<<"Base::fun"<<end;}};

    class Derived:public Base

    {

    public:

    void fun()

    {

    【 】//显式调用基类的fun函数

    cout<<"Derived::fun"<<endl;

    }

    };


    正确答案:Base::fun();
    Base::fun(); 解析:类层次中的访问规则。

  • 第4题:

    以下程序的输出结果是_____。 include class object {private:int val; public:objec

    以下程序的输出结果是_____。

    include<iostream.h>

    class object

    { private:

    int val;

    public:

    object( ) ;

    object(int i) ;

    ~object( ) ;};

    object: :object( )

    { val=0;

    cout < < "Default constructor for object" < < endl;}

    object: :object(int i)

    { val=i;

    cout < < "Constructor for object" < < val < < endl;}

    object: :~object( )

    { cout < < "Destructor for object" < < val < < endl;}

    class container{ private:

    object one;

    object two;

    int data;

    public:

    container( ) ;

    container(int i,int j,int k) ;

    ~container( ) ;};

    container: :container( )

    { data=0;

    cout < < "Default constructor for container" < < endl;}

    container: :container(int i,int j,int k) :two(i) ,one(j)

    { data=k;

    cout < < "Constructor for container" < < endl;}

    container: :~container( )

    { cout < < "Destructor for container" < < endl;}

    void main( )

    { container anObj(5,6,10) ;}


    正确答案:Constructor for object6 Constructor for object5 Constructor for container Destructor for container Destructor for object5 Destructor for object6
    Constructor for object6 Constructor for object5 Constructor for container Destructor for container Destructor for object5 Destructor for object6 解析:C++语言中的构造函数和析构函数分别是在声明对象时和对象调用完毕后调用,本题中的调用就是这样成对出现的。

  • 第5题:

    有如下程序:include using namespace std;class Base{ public: void fun() { cout<<"

    有如下程序: #include <iostream> using namespace std; class Base { public: void fun() { cout<<"Base::fun"<<endl; } }; class Derived : public Base { public: void fun() { ______ cout<<"Derived::fun"<<endl; } }; int main() { Derived d; d.fun(); return 0; } 已知其执行后的输出结果为: Base::fun Derived::fun 则程序中下划线处应填入的语句是( )。

    A.Base.fun();

    B.Base::fun();

    C.Base->fun();

    D.fun();


    正确答案:B
    解析:此题考查的是继承的使用。分析题目可知,横线处应填入对基类成员函数fun()的调用语句,此处只能使用作用域运算符“::”才能调用到基类的同名函数。

  • 第6题:

    对于下面程序,对p进行赋值正确的是( )。 class A{ public:fun(int i){cout<<i<<endl;} }; main(){ void(A::*p)(int); }

    A.p=fun;

    B.p=fun();

    C.p=A::fun;

    D.p=A::fun()


    正确答案:C
    解析:给类函数指针赋值的格式是:指针名>=类名::函数名>

  • 第7题:

    下列程序中需要清理动态分配的数组,划线处应有的语句是_______。 include class pers

    下列程序中需要清理动态分配的数组,划线处应有的语句是_______。

    include<iostream.h>

    class person

    {

    int age,tall;

    public:

    person( ){age=0;tall=40;cout<<"A baby is born."<<endl;}

    person(int i){age=i;tall=40;cout<<"A old person."<<endl;}

    person(int i,int j){age=i;tall=j;cout<<"a old person with tall."<<endl;)

    ~person( ){cout<<"person dead."<<endl;}

    void show( )

    {

    cout<<"age="<<age<<",tall="<<tall<<endl;

    }

    };

    void main( )

    {

    person*ptr;

    ptr=new person[3];

    ptr[0]=person( );

    ptr[1]=person(18);

    ptr[2]=person(20,120);

    for(int i=0;i<3;i++)

    ptr[i].show( );

    ______

    }


    正确答案:delete[]ptr;
    delete[]ptr; 解析:本题考察对象数组的销毁方法,注意删除对象数组时,[]内不要指定大小。

  • 第8题:

    将下面程序补充完整。 include using namespace std; class Base{ public: 【 】fun(){r

    将下面程序补充完整。

    include <iostream>

    using namespace std;

    class Base{

    public:

    【 】 fun(){return 0;} //声明虚函数

    };

    class Derived:public Base{

    public:

    x,y;

    void SetVal(int a,int b){}

    int fun(){return x+y;}

    };

    void 【 】 SetVal(int a,int b){x=a;y=b;} //类Derived成员函数

    void main(){

    Derived d;

    cout<<d.fun()<<endl;

    }


    正确答案:virtual int Derived::
    virtual int Derived:: 解析:virtual int用于声明虚函数;Derived::用于指定类Derived成员函数。

  • 第9题:

    下面程序运行的结果是()。includeusing namespace std;class A{ protected:int a; pub

    下面程序运行的结果是( )。 #include<iostream> using namespace std; class A{ protected: int a; public: void input(int i) {a=i;} }; class B{ protected: int a; public: void input(int j) {a=j;} }; class C: public A, public B { int x; public: void input() {x=A::a * B::a;cout<<x<<endl;} }; void main() { C c; c.A::input(5); c.B::input(8); c.input(); }

    A.5

    B.8

    C.40

    D.编译出错


    正确答案:C
    解析:用成员名限定法来消除二义性,故答案为C。

  • 第10题:

    若有以下程序:include using namespace std;class A{private:int a;public:A(int i){

    若有以下程序: #include <iostream> using namespace std; class A { private: int a; public: A(int i) { a=i; } void disp () { cout<<a<<","; } }; class B { private: int b; public: B(int j) { b=j; } void disp () { cout<<b<<","; } }; class C : public B,public A { private: int c; public: C(int k):A(k-2),B(k+2) { c=k; } void disp () { A::disp(); B::disp(); cout<<c<<endl; } }; int main() { C obj(10); obj.disp(); return 0; }

    A.10,10,10

    B.10,12,14

    C.8,10,12

    D.8,12,10


    正确答案:D
    解析:本题考核派生类构造函数的使用。本题中,派生类c具有多重继承关系,所以在派生类C的构造函数中应该包含基类A和B的成员初始化列表。

  • 第11题:

    下面程序的运行结果是()。includeusing namespace std;class A{public: virtual~A() {

    下面程序的运行结果是( )。 #include<iostream> using namespace std; class A { public: virtual~A() { cout<<"call A::~A()"<<endl;} }; class B:public A { char * p; public: B(int i) { p=new char[i];} ~B() { delete(p); cout<<"call B::~B()"; } }; void main() { A * a=new B(8); delete a; }

    A.call B::~B()call A::~A()

    B.call B::~B()

    C.call A::~A()

    D.call A::~A()call B::~B()


    正确答案:A
    解析:本题考查虚函数的使用,通过基类指针指向派生类的对象,从而动态地访问派生类对象中的虚函数。本题若没有把A类中的析构函数说明为virtual,则答案为C。

  • 第12题:

    下列程序的运行结果是______。 include class Base { public: virtual void func(int

    下列程序的运行结果是______。

    include<iostream.h>

    class Base

    {

    public:

    virtual void func(int i){cout<<"class Base:"<<i<<end1;)

    };

    class Derived: public Base

    {

    public:

    void func(double d){cout<<"class Derived:"<<d<<endl;}

    };

    void main( )

    {

    Base a,*p=a;

    Derived b;

    p=&b;

    (*p).func(3.3);

    }


    正确答案:class Base:3
    class Base:3 解析:题中基类和派生类中有同名函数,但是参数不同。派生关系中,只有在函数类型、函数名和参数个数、参数类型完全相同时,才表现多态性。本题中参数不同,编译器便认为是两个完全不同的函数。通过基类的指针指向派生类对象时,该指针只能访问到派生类中具有多态性的成员函数,而与基类无关的函数是无法通过基类指针来访问的。故调用的是base类的 func函数,系统将3.3强制转化为整型数3。如果将派生类中的func的形参改为int型,则执行的就会是派生类的func函数,此时表现为多态。

  • 第13题:

    请将下列类定义补充完整。

    class Base{public:void fun(){tout<<"Base::fun"<<endl;}};

    class Derived:public Base

    {

    public:

    void fun()

    {

    ______//显示调用基类的fun函数

    cout<<"Derived::fun"<<endl;

    };


    正确答案:Base::fun();。
    Base::fun();。 解析: 本题考查的是成员函数的调用。因为横线处的作用是调用基类的fun函数,又因为派生类也碉tun()函数,所以必须对fun()函数加以限定,即Base::fun();。

  • 第14题:

    下面程序的运行结果是【】。 include using namespace std; class count{ static int n;

    下面程序的运行结果是【 】。

    include <iostream>

    using namespace std;

    class count

    {

    static int n;

    public:

    count()

    {

    n++;

    }

    static int test()

    {

    for(int i=0;i<4;i++)

    n++;

    return n;

    }

    };

    int count::n = O;

    int main()

    {

    cout<<count:: test()<<" ";

    count c1, c2;

    cout<<count:: test()<<endl;

    return 0;

    }


    正确答案:410
    410 解析:本题主要考查C++类中静态数据成员的使用。题目程序首先定义了类count,其内部含有private 类型数据成员static int n;同时含有public 类型构造函数 count()和静态成员函数static int test(),这两个函数的功能分别是为对象申请系统资源并将静态数据成员n加1和将静态数据成员n加4。主函数前,程序将静态数据成员n初始化为0,该数据成员为所有类count 的对象所共有的数据成员;主函数中程序首先执行静态成员函数test() (由于test 声明为 static,因此其调用时无需通过具体对象),其执行过程中,静态数据成员n应该加4变成n:4,因此此处输出为4;此后程序创建对象c1和c2,由于在每次创建过程中都要调用构造函数count(),而每次调用count()函数后,静态数据成员n值都会加1。因此,创建两个对象之后,n值变为n=6:再次执行test()函数后,n的值再次加4,因此变为n=6+4=10。故程序全部执行后,变量n值变为10,而中间程序输出为“410”。

  • 第15题:

    请在下列程序中的横线处填写正确的语句。include using namespace std; class Base{ pu

    请在下列程序中的横线处填写正确的语句。

    include<iostream>

    using namespace std;

    class Base{

    public:

    void fun(){cout<<“Basefun”<<endl;}

    );

    class Derivde:public Base{

    public:

    void fun(){

    //调用基类的函数fun()

    cout<<“Derived fun”<<endl;

    }

    };


    正确答案:Base::fun()。
    Base::fun()。 解析: 本题考查的是派生类对基类成员的访问。本题中派生类Derived覆盖了基类Base中的fun (),如果需要调用基类中的fun(),则需要使用域运算符“::”。故应填写Base::fun()。

  • 第16题:

    下面程序的运行结果是______。 include void fun(int &a,int b=3) { static int

    下面程序的运行结果是______。

    include<iostream.h>

    void fun(int &a,int b=3)

    {

    static int i=2;

    a=a+b+i;

    i=i+a;

    }

    void main()

    {

    int x=5,y=2;

    fun(x,y);

    cout<<x<<",";

    fun(x);

    cout<<x<<endl;

    }


    正确答案:923
    9,23

  • 第17题:

    有如下程序:includeusing namespace std;int i=1;class Fun{public:static int i;int

    有如下程序: #include<iostream> using namespace std; int i=1; class Fun { public: static int i; int value(){return i-1;} int value()const{return i+1;} }; int Fun::i=2; int main() { int i=3; Fun fun 1; const Fun fun2; ______ return 0; } 若程序的输出结果是: 123 则程序中横线处的语句是( )。

    A.cout<<fun1.value()<<Fun::i<<fun2.value();

    B.cout<<Fun::i<<fun1.value()<<fun2.value();

    C.count<<fun.value()<<fun2.value()<<Fun::i;

    D.cout<<fun2.value()<<Fun::i<<fun1.value();


    正确答案:A
    解析:此题因为定义的变量i是static类型的(main()函数内部的i只是一个局部变量),所以,选项A)中fun1.value()的返回值是1,Fun::i引用的是外部变量会输出2;fun2.value();会调用常成员函数int valueoconstfrerun i+1;}使得外部静态变量i的值增加为3,故输出3。

  • 第18题:

    在下面程序中,括号里应填()。 include using namespace std; class A { public: void

    在下面程序中,括号里应填( )。 #include <iostream> using namespace std; class A { public: void fun( ) { cout << "Hello" << endl; } }; class B:: public A { void fun( ) { ( ) //调用基类的函数fun( ) tout << "HI" << endl; } };

    A.fun()

    B.A. fun()

    C.A::fun()

    D.A->fun(


    正确答案:C
    解析:调用格式;类名>::成员名>或者类名>::成员名>(参数表>)。

  • 第19题:

    请将下列类定义补充完整。

    class Base{public:void fun( ){cout<<"Base::fun"<<endl;}};

    class Derived:public Base

    {

    public:

    void fun( ){

    ______//显式调用基类的fun函数

    cout<<"Derived::fun"<<endl;

    }

    };


    正确答案:Base::fun( );
    Base::fun( ); 解析:本题考核虚基类。作用域分辨符号是"::",它可以用来限定要访问的成员所在的类的名称。一般来说,在派生类中对基类成员的访问应该是唯一的。但是,多继承情况下可能造成对基类中某个成员的访问出现不唯一的情况,通过使用对象作用域分辨符可以解决这种对基类成员访问的二义性问题。

  • 第20题:

    分析一下这段程序的输出(Autodesk)

    class B

    {

    public:

    B()

    {

    cout<<"default constructor"<<endl;

    }

    ~B()

    {

    cout<<"destructed"<<endl;

    }

    B(int i):data(i) //B(int) works as a converter ( int ->

    instance of B)

    {

    cout<<"constructed by parameter " << data <<endl;

    }

    private:

    int data;

    };

    B Play( B b)

    {

    return b ;

    }


    正确答案:

     

    (1) results:
    int main(int argc, char* argv[]) constructed by
    parameter 5
    { destructed B(5)形参析构
    B t1 = Play(5); B t2 = Play(t1); destructed t1形
    参析构
    return 0;
    destructed t2 注意顺序!
    } destructed t1
    (2) results:
    int main(int argc, char* argv[]) constructed by
    parameter 5
    { destructed B(5)形参析构
    B t1 = Play(5); B t2 = Play(10); constructed by
    parameter 10
    return 0;
    destructed B(10)形参析构
    } destructed t2 注意顺序!
    destructed t1

  • 第21题:

    假定n=3,,下列程序的运行结果是()。includeint Fun(int m)void main(){cout<<"Pleas

    假定n=3,,下列程序的运行结果是( )。 #include<iostream.h> int Fun(int m) void main() { cout<<"Please input a number:"; int n,s=0; cin>>n; s=Fun(n); cout<<s<<endl; } int Fun(int m) { iht p=1,s=0; for (int I=1;I<=m;I++) { p*=I; S+=p; } return s; }

    A.7

    B.9

    C.8

    D.10


    正确答案:B

  • 第22题:

    若有以下程序:includeusing namespace std;class A{public:A(int i,int j){a=i;b=j;}

    若有以下程序: #include<iostream> using namespace std; class A { public: A(int i,int j) { a=i; b=j; } void move(int x,int y) { a+=x; b+=y; } void show() { cout<<a<<","<<b<<endl; } private: int a,b; }; class B:private A { public: B(int i,int j):A(i,j){} void fun() { move(3,5); } void fl() { A::show(); } }; int main() { B d(3,4); d.fun(); d.fl(); return 0; } 程序执行后的输出结果是( )。

    A.3,4

    B.6,8

    C.6,9

    D.4,3


    正确答案:C

  • 第23题:

    请在如下程序中的空格处填写正确的语句: include using namespace std; class Base {

    请在如下程序中的空格处填写正确的语句:

    include <iostream>

    using namespace std;

    class Base {

    public:

    void fun() {cout<<"Base fun"<<endl; }

    };

    class Derived: public Base {

    public:

    void fun() {

    【 】; //调用基类的函数fun()

    cout<<"Derived fun "<<endl;

    }

    };


    正确答案:Base::fun()
    Base::fun() 解析:本题考查的知识点是:派生类对基类成员的访问。本题的派生类Derived覆盖了基类Base中的fun(),如需调用基类版本的fun(),则需要使用域运算符“::”。故应该填写Base::fun()。