类中包含了一个静态成员函数,则main函数中和P.f1(P);语句具有同样功能的语句为______。include<io

题目

类中包含了一个静态成员函数,则main函数中和P.f1(P);语句具有同样功能的语句为______。

include<iostream.h>

class M

{public:

M(int A){A=a;B+=a;}

static void f1(M m);

private:

int A;

static int B;};

void M::f1(M m)

{

cout<<“A=“<<m.A((end1;

cout<<“B=”<<m.B<<en

参考答案和解析
正确答案:M::f1(P);。
M::f1(P);。 解析: 由于f1是类M的静态成员函数,即说明类M的任何对象都共享一份f1,因此,不仅可以从对象那里访问f1,还可以用域操作符::通过类名来访问。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

编写函数fun(),它的功能是;根据以下公式求p的值,结果由函数值带回。m与n为两个正数且要求m>n。

P=m!/n!(m-n)!),例如:m=12,n=8时,运行结果为495.000000。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include <conio.h>

include <stdio.h>

float fun (int m, int n)

{

}

main()

{

clrscr() ;

printf ("p=%f\n", fun (12,8) ) ;

}


正确答案:float fun (int m int n) { int i; double p=1.0; for(i=1;i=m;i++) p=p*i; /*求m!*/ for(i=1;i=n;i++) p=p/i; /*求m!/n!*/ for(i=1;i=m-n;i++) p=p/i; /*求m!/(n!(m-n)!)*/ return p; }
float fun (int m, int n) { int i; double p=1.0; for(i=1;i=m;i++) p=p*i; /*求m!*/ for(i=1;i=n;i++) p=p/i; /*求m!/n!*/ for(i=1;i=m-n;i++) p=p/i; /*求m!/(n!(m-n)!)*/ return p; } 解析:本题中,欲求P的值,需要先求m,n,m-n的阶乘值,可用循环语句实现。注意阶乘值应当是double类型,若定义x,y,z为整型变量,则p=x/(y*z)中的除法为整数除法。

第2题:

设p是指向一个类动态对象的指针变量,则执行"delete p;"语句时,将自动调用该类中的______函数。


正确答案:析构
析构

第3题:

一个C程序的执行是从()。

A.main()函数开始,直到main()函数结束。

B.第一个函数开始,最后一个函数结束。

C.第一个语句开始,最后一个语句结束。

D.main()函数开始,直到最后一个函数。


参考答案:A

第4题:

已知f1(int)是类A的公有成员函数,并将指针p定义为可以指向函数f1的指针类型,则可以实现让p是指向成员函数f1()的指针的语句为【 】。


正确答案:p=A::f1;
p=A::f1;

第5题:

已知函数原型"double fun();",要定义一个函数指针变量p指向该函数的首地址,则其定义语句为"double (*p)()=fun;"。()

此题为判断题(对,错)。


正确答案:正确

第6题:

已知在函数func中语句this->ff=0;与语句ff=O;的效果完全相同。对于这一现象,下列表述中错误的是

A.ff是某个类的数据成员,func是该类的友元函数

B.ff是某个类的数据成员,func是该类的成员函数

C.this->ff和ff是同一个变量

D.func不是一个静态成员函数


正确答案:A

第7题:

请补充main函数,该函数的功能是:输出一个3×3的矩阵,要求必须使用行指针表示输出变量。

注意;部分源程序给出如下.

请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

试题程序:

include<s tdio. h>

main()

{

static int array[3] [3]={{9,8,7}, {6,5,

4}, (3,2,1}};

iht (*p) [3],j,i;

p=【 】

clrscr ();

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

{

printf (" \n\n" );

for (j=0; j<3; j++)

printf("%4d",【 】);

}

}


正确答案:array *(*(p+i)+j)
array *(*(p+i)+j) 解析:第一空:p是一个指针,指向大小为3的一维数组。首先要使指针p指向数组array的首地址,而数组名array即表示数组slray的首地址,所以将array赋给p。第二空:*(*(p+i+j)表示数组的第i行第j列元素,即array[i][j]。

第8题:

请将以下程序中的函数声明语句补充完整

#include <stdio.h>

int【12】 ;

main( )

{int x,y,(*p)();

p=max;

printf(“&d\n”,&x,&y);

}

Int max(int a,int b)

{return (a>b/a:b);}


正确答案:

12max(int a,int b)

第9题:

假定AB为一个类,则执行“ABa(4),b[3],*p[2];”语句时,自动调用该类构造函数3次。()


参考答案:错误

第10题:

完成下列类的构造函数,初始化语句为______。 include class Test { private: int x,y

完成下列类的构造函数,初始化语句为______。

include<iostream.h>

class Test

{

private:

int x,y;

public:

void Test(int initx,int inity){

______

}

void printx( ){cout<<x<<"-"<<y<<"="<<x-y;}

};

void main( )

{

Test x(300,200);

x.printx( );

}


正确答案:x=initx; y=inity;
x=initx; y=inity; 解析:本题考查的是类的私有数据如何从接口成员函数那里得到数据的。本题虽然简单,却体现了类的数据封装思想,并指明了如何完成这种封装。

更多相关问题