1. public class GC {  2. private Object o;  3. private void 

题目
单选题
1. public class GC {  2. private Object o;  3. private void doSomethingElse(Object obj) { o = obj; }  4. public void doSomething() {  5. Object o = new Object();  6. doSomethingElse(o);  7. o = new Object();  8. doSomethingElse(null);  9.o=null;  10. }  11. }  When the doSomething method is called, after which line does the Object created in line 5 become available for garbage collection?()
A

 Line 5

B

 Line 6

C

 Line 7

D

 Line 8

E

 Line 9

F

 Line 10

参考答案和解析
正确答案: A
解析: 暂无解析
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下面这个程序的结果是includeclass A{private:int a;public:void seta();int geta(

下面这个程序的结果是 #include<iostream.h> class A { private: int a; public: void seta();int geta();}; void A∷seta() {a=1;} int A∷geta() {return a;} class B { pnvate: int a; publiC: void sera();int geta();}; void B∷seta() {a = 2;} int B∷geta() {return a;} class C:public A,public B { private: int b; public: void display();}; void C∷display() { int b=geta(); cout<<b;} void main() { C c; c.seta(); c.display();}

A.1

B.2

C.随机输出1或2

D.程序有错


正确答案:D
解析:在类A中有geta()函数,在类B中也有geta()函数,类C继承了类A和类B,这样就产生了二义性,所以程序会出错。

第2题:

下面这个程序的结果是 include class A { private: int a; public: void seta( ) ;

下面这个程序的结果是

#include<iostream.h>

class A

{

private:

int a;

public:

void seta( ) ;int geta( ) ;};

void A: :seta( )

{ a=1;}

int A: :geta( )

{ retum a;}

class B

{ private:

int a;

public:

void seta( ) ;int geta( ) ;};

void B: :seta( )

{a=2;}

int B: :geta( )

{return a;}

class C: public A,public B

{ private:

int b;

public:

void display( ) ;};

void C: :display( )

{ int b=geta( ) ;

cout < < b;}

void main( )

{ C c;

c. seta( ) ;

c. display( ) ;}

A.1

B.2

C.随机输出1或2

D.程序有错


正确答案:D
解析:在类A中有geta( ) 函数,在类B中也有geta( ) 函数,类C继承了类A和类B,这样就产生了二义性,所以程序会出错。

第3题:

有以下程序:includeusing namespace std;class A{private:int a;public:A(int i){a=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<<“,”;

A.10,10,10

B.10,12,14

C.8,10,12

D.8,12,10


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

第4题:

若有以下程序:includeusing namespace std;class A{private:inta;public:voidseta(in

若有以下程序: #include <iostream> using namespace std; class A { private: int a; public: void seta(int x) { a=x; } void showa() { cout<<a<<","; } }; class B { private: int b; public: void setb (int x) { b=x; } void showb() { cout<<b<<","; } }; class C :public A,private B { private: int c; public: void setc(int x, inc y, int z) { c=z; seta (x); setb (y); } void showc() { showa (); showb (); cout<<c<<end1; } }; int main () { C c; c. setc(1,2,3); c.showc(); return 0; } 程序执行后的输出结果是

A.1,2,3

B.1,1,1

C.2,2,2

D.3,3,3


正确答案:A
解析:本题考核派生类的应用。本题中类A和类B都是基类。而类C从类A公有派生,从类B处私有派生.所以类C中的函数成员可以访问类A和类B中的公有成员。在类C的函数成员setc中,调用基类A的函数成员seta对A的数据成员a赋值,还调用了基类B的函数成员setb对类B的数据成员b赋值,然后对类C自己的数据成员c赋值。在类C的函数成员showc中,调用基类A的函数成员showa显示数据成员a的值,还调用基类B的函数成员showb显示数据成员b的值,然后输出类C自己的数据成员c的值.在主函数main中,先定义派生类的对象c,然后调用setc对c中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为:1,2,3。

第5题:

若有以下程序:includeusing namespace std;class A{private:int a; public:void seta

若有以下程序: #include<iostream> using namespace std; class A { private: int a; public: void seta(int x) { a=x; } void showa() { cout<<a<<","; } }; class B { private: int b; public: void setb(int x) { b=x; } void showb() { cout<<b<<",”; } }; class C:pUblic A,private B { private: int c; public: void setc(int x,int y,int z) { c=z; seta(x); setb(y); } void showc() { showa(); showb(); cout<<c<<end1; } }; int main() { Cc; c.setc(1,2,3); c.showc(); retrun 0; } 程序执行后的输出结果是

A.1,2,3

B.1,1,1

C.2,2,2

D.3,3,3


正确答案:A
解析:本题考核派生类的应用。本题中类A和类B都是基类。而类C从类A公有派生,从类B处私有派生。所以类C中的函数成员可以访问类A和类B中的公有成员。在类C的函数成员setc中,调用基类A的函数成员seta对A的数据成员a赋值,还调用了基类B的函数成员setb对类B的数据成员b赋值,然后对类C自己的数据成员c赋值。在类C的函数成员showc中,调用基类A的函数成员showa显示数据成员a的值,还调用基类B的函数成员showb显示数据成员b的值,然后输出类C自己的数据成员c的值。在主函数main中,先定义派生类的对象c,然后调用setc对c中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为:1,2,3。

第6题:

1.public class GC{2.private Objec to;3.private void doSomethingElse(Object obj){o=obj;}4.public void doSomething(){5.Object o=new Object();6.doSomethingElse(o);7.o=new Object();8.doSomethingElse(null);9.o=null;10.}11.}When the doSomething method is called,after which line does the Object created in line 5 become available for garbage collection?()

A.Line5

B.Line6

C.Line7

D.Line8

E.Line9

F.Line10


参考答案:D

第7题:

以下程序的输出结果是_____。 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++语言中的构造函数和析构函数分别是在声明对象时和对象调用完毕后调用,本题中的调用就是这样成对出现的。

第8题:

下列类的定义中,有( ) 处语法错误。 class Base { public: Base(){} Base(int i) { data=i; } private: int data; }; class Derive: public Base { public: Derive(): Base(O) { } Derive(int x) { d=x; } void setvalue(int i) { data=i; } private: d; };

A.1

B.2

C.3

D.4


正确答案:B
解析:本题考核派生类的定义和成员的访问权限。第一处错误:在派生类的构造函数Derive(intx)中没有调用基类的构造函数对基类对象初始化:第二处错误:数据data是基类Base的私有成员,派生类Derive不能访问,所以在函数setvalue中对data的赋值是错误的。

第9题:

类class one 在声明func 成员函数时发生错误,出错原因是【 】。

Class one

{

private:

int a;

public:

void func(two& )

};

class two

{

private:

int b;

friend void one: :func(two & );

};

void one: : func(two& r)

a=r.b;

}


正确答案:class one前没有声明语句class two;
class one前没有声明语句class two; 解析:当一个类作为另一个类的成员函数、成员函数的参数或其他情况的时候,要确保编译器能正确解析。由于在class one之前没有关于class two的任何说明,而在class one的func函数中却用了class two类的参数。因此是错误的。

第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的成员初始化列表。

更多相关问题