3、下面程序的运行结果为()。 #include<iostream> using namespace std; class A { static int n; public: A(){n=1;} A(int num){n=num;} void print(){cout<<n;} }; int A::n=2; int main() { A a,b(3); a.print(); b.print(); cout<<endl; }

题目

3、下面程序的运行结果为()。 #include<iostream> using namespace std; class A { static int n; public: A(){n=1;} A(int num){n=num;} void print(){cout<<n;} }; int A::n=2; int main() { A a,b(3); a.print(); b.print(); cout<<endl; }

A.11

B.13

C.23

D.33

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

第1题:

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

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

inChlde<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=0;

int main()

{

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

count c1, c2;

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

return 0;

}


正确答案:4 10
4 10 解析:本题主要考查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”。

第2题:

下面程序的运行结果为

#include

class A

{

static int n;

public:

A(){n=1;}

A(int num){n=num;}

void print(){coot <

}

int A::n=2:

void main()

{

A a.b(3);

a.print();

b.pint();

cout <

}

A.11

B.13

C.23

D.33


正确答案:D

第3题:

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

class A

} public:

int num;

A(int i){num=i;}

A(A &a){num=++a.num;}

void print(){cout<<num;}

};

void main(){

A a(1),b(a);

a.print();

b.print();

}


正确答案:静态
静态 解析:在C++类的规定中,静态函数只能给引用类的静态成员和非数据成员。

第4题:

有如下程序: include using namespace std; class Test{ public: Tes

有如下程序: #include<iostream> using namespace std; class Test{ public: Test() {n+=2;} ~Test() {n-=3;} static int getNum(){return n;} private: static int n; }; int Test::n=1; int main() { Test*p=new Test; delete p; cout<<"n="<<Test::getNum()<<endl; return 0; } 执行后的输出结果是( )。

A.n=0

B.n=1

C.n=2

D.n=3


正确答案:A
解析:语句Test*p=new Test;会调用类的构造函数Test() {n+=2;},使n的值由原来的1变为3,然后delete p调用类的析构函数~Test() {n-=3;},因为n是static型变量,所以会在3的基础上减 3,使得输出结果为0。

第5题:

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

第6题:

下面程序的运行结果为includeclass A{int num;public:A(int i){num=i;}A(A &a)

下面程序的运行结果为 #include<iostream.h> class A { int num; public: A(int i){num=i;} A(A &a) { num = a.num+ +;} void print( ) {cout << num;} }; void main( 0 { A a (1),b (a) ; a.print( ); b.

A.11

B.12

C.21

D.22


正确答案:C
解析:本题考查考生对拷贝构造函数的掌握。因为++运算是右结合的,所以在使用a对b赋值时,b的num变为1而a的num变为2(先赋值再自加)。

第7题:

下面程序的运行结果为 include Class Astatic int n; public: A( ) {n=1;} A(int n

下面程序的运行结果为

#include<iostream.h>

Class A

static int n;

public:

A( ) {n=1;}

A(int num) {n=num;}

void print( ) {cout < < n;}

};

int A: :n=2;

void main( )

{

A a,b(3) ;

a. print( ) ;

b. print( ) ;

cout < < endl;

}

A.11

B.13

C.23

D.33


正确答案:D
解析:本题考查的是静态数据成员的使用,n为类A的静态成员,即为类A的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员n的值也为3(这两个n实际上是同一个) 。

第8题:

有以下面程序: include using namespace std; long fib(int n) { if (n>2)return (fi

有以下面程序:

include <iostream>

using namespace std;

long fib(int n)

{

if (n>2)

return (fib(n-1)+fib(n-2));

else

return 2;

}

int main()

{

cout<<fib(3)<<endl;

return 0;

}

则该程序的输出结果应该是【 】。


正确答案:4
4

第9题:

有如下程序: include using namespace std; class Test { public

有如下程序: #include<iostream> using namespace std; class Test { public: Test(){n+=2;} ~Test(){n-=3;} static int getNum(){return n;} private: static int n; }; int Tesl::n=1 int main() { Test*p=new Test; delete p; cout<<"n="<<Tes::tgetNum()<<endl; return 0; } 执行后的输出结果是

A.n=0

B.n=1

C.n=2

D.n=3


正确答案:A
解析:本题考查构造函数和析构函数的调用。类的静态成员和成员函数是类属,不依赖于对象实例存在。

第10题:

如下程序的输出结果是includeusing namespace std;class Test{public:Test( ){n+=2;}

如下程序的输出结果是 #include<iostream> using namespace std; class Test{ public: Test( ){n+=2;} ~Test( ){n-=3;} static int getNum( ){return n;} private: static int n; }; int Test::n=1; int main( ){ Test*P=new Test: delete P; cout<<"n="<<Test::getNum( )<<endl; return 0; }

A.n=0

B.n=1

C.n=2

D. n=3


正确答案:A
解析:静态数据成员的初始值n=1,执行Test*p=new Test;,调用构造函数后,n= 3,deletep;调用析构函数,n-=3,所以最终n=0。

更多相关问题