对于下面程序,对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()

题目

对于下面程序,对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
解析:给类函数指针赋值的格式是:指针名>=类名::函数名>
更多“对于下面程序,对p进行赋值正确的是( )。 class A{ public:fun(int i){cout<<i<<endl;} ”相关问题
  • 第1题:

    下面程序的结果是 ______。includeclass A{ public:virtual voidfun()=0{};};class

    下面程序的结果是 ______。 #include<iostream.h> class A{ public: virtual void fun()=0{}; }; class B:public A{ public: void fun () {cout<< "new file" ;} }; class C: public A{ public: void fun (){cout<<"open file"<< " " } }; class D: public A{ public: void fun () {cout<< "save file\n" ;} }; void main() { A a,*p; B b; C c; D d; p=&c; p->fun (); p=&b; p->fun (); p=&d; p->fun(); }

    A.new file open file save file

    B.new file new file new file

    C.编译出错

    D.open file new file save file


    正确答案:C

  • 第2题:

    下面程序的运行结果是()。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。

  • 第3题:

    下列程序划线处应填入的正确语句是()。 class Base { public: void fun(){ cout<<"Base::fun"<<endl; } }; class Derived:public Base { public: void fun() { _____________ //显示调用基类的函数fun() cout<<"Derived::fun"<<endl; } };

    A.fun();

    B.Base.fun();

    C.Base::fun();

    D.Base->fun();


    D

  • 第4题:

    对于下面程序,对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)


    正确答案:C
    解析:使用类函数指针格式是:对象名.*指针名>=(实参表)>

  • 第5题:

    下列程序的运行结果是______。 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函数,此时表现为多态。