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

题目

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

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列程序划线处应填入的正确语句是()。 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

第2题:

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

第3题:

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

第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题:

下面程序的结果是 ______。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

第6题:

分析一下这段程序的输出(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

第7题:

有如下程序: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。

第8题:

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

第9题:

有如下程序 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