单选题若MyClass是一个类名,且有如下语句序列MyClass cl,*c2;MyClass *c3=new MyClass;MyClass c4=cl;上面的语句序列所定义的类对象的个数是(  )。A 1B 2C 3D 4

题目
单选题
若MyClass是一个类名,且有如下语句序列MyClass cl,*c2;MyClass *c3=new MyClass;MyClass &c4=cl;上面的语句序列所定义的类对象的个数是(  )。
A

1

B

2

C

3

D

4

参考答案和解析
正确答案: B
解析:
c1是MyClass类的对象;c2是类的指针,没有指向任何对象;c3是类的指针,指向新建的类对象;c4是类对象的引用,是对象c1的别名,没有创建新的类对象。因此,c1、c3创建了新的类对象,程序共定义了2个类对象。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

( 29 )已知类 MyClass 声明如下:

class MyClass{

int n;

public;

MyClass ( int k ) : n ( k ) {}

int getValue () const{return n;}

};

在下列数组定义中正确的是

A ) MyClass x1[2];

B ) MyClass x2[2]={new MyClass ( 1 ) , new MyClass ( 2 ) };

C ) MyClass *x3[2];

D ) MyClass *x4[2]={MyClass ( 1 ) , MyClass ( 2 ) };


正确答案:C

第2题:

( 12 )若 MyClass 是一个类名,且有如下语句序列

MyClass c1,*c2;

MyClass *c3=new MyClass;

MyClass &c4=c1;

上面的语句序列所定义的类对象的个数是

A ) 1

B ) 2

C ) 3

D ) 4


正确答案:B

第3题:

有以下类定义 class MyClass { private: int id; char gender; char*phone; public: MyClass():id(0),gender('#'),phone(NULL){} MyClass(int no,char ge='#',char*ph=NULL) {id=no;gender=ge;phone=ph;} }; 下列类对象定义语句中错误的是

A.MyClass myObj;

B.MyClass myObj(11,"13301111155");

C.MyClass myObj(12,'m');

D.MyClass myObj(12);


正确答案:B
解析:本题考核构造函数的应用。对象建立用初始化列表对数据成员进行时,列表中的参数类型要与构造函数中形参类型一致。B选项中第二个参数为"13301111155"是字符串,而构造函数中第二个形参为char型,两者不一致造成错误。

第4题:

若MyClass是一个类名,其有如下语句序列:MyClass c1,*c2;MyClass*c3=new MyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是( )。

A.1

B.2

C.3

D.4


正确答案:B
解析:首先定义对象的格式:(存储类型)<类名><对象名1>(<对象名2>,…,<对象名n>);第一句定义了对象c1和指针对象c2,而MyClass*c3=new MyClass是Java里的定义方式,MyClass&c4=c1这种定义方式也是不对的。

第5题:

类MyClass的定义如下: class MyClass { public: MyClass(){value=0;} SetVariable(int i){value=i;} private: int value; }; 则对下列语句序列正确的描述是( )。

A.语句p=&my,是把对象:my赋值给指针变量p

B.语句MyClass*p,my;会调用两次类MyClass的构造函数

C.对语句*P.SetVariable(5)的调用是正确的

D.语句P->SetVariable(5)与语句my.SetVariable(5)等价


正确答案:D
解析: 选项A,语句p=&my;是把对象my的地址值赋值给指针变量P;选项B,语句MyClass*p,my;由于 p只是一个指向对象的指针,因此定义指针p不调用构造函数,所以此语句只调用一次构造函数:对成员函数的引用可以通过两种形式:指针->成员函数(形参表)或者对象名。成语函数名(形参表),故选项C错误,选项D正确。

第6题:

类MyClass的定义如下,若要对value赋值,则下面语句正确的是( )。 class MyClass { public: MyClass(){} MyClass(int i){value=new int(i);} int*value; };

A.MyClass my;my.value=10;

B.MyClass my;*my.value=10;

C.MyClass my;my.*value=10;

D.MyClass my(10);


正确答案:D
解析:因题目中定义的指针value是指向变量i的,所以直接利用语句MyClass(int i){value=new int (i);}对Value进行赋值即可。

第7题:

( 22 )要定义一个引用变量 p ,使之引用类 MyClass 的一个对象,正确的定义语句是

A ) MyClass p=MyClass;

B ) MyClass p=new MyClass;

C ) MyClass &p=new MyClass;

D) MyClass a , &p=a;


正确答案:D

第8题:

类MyClass的定如下,若要对value赋值,则下面语句正确的是( )。 class MyClass { public: MyClass(){} MyClass(int i){value=new int(i);} int*value; };

A.MyClass my;my.value=10;

B.MyClass my;*my.value=10;

C.MyClass my;my.*value=10;

D.MyClass my(10);


正确答案:D
解析: 因题目中定义的指针value是指向变量i的,所以直接利用语句MyClass(int i){value=new int(i);}对 value进行赋值即可。

第9题:

类MyClass的定义如下: class MyClass { public: MyClass(){value=0;} SetVariable(int i){value=i} private: int value; }; 则对下列语句序列正确的描述是( )。 MyClass*P,my;p=&my;

A.语句p=&my;是把对象my赋值给指针变量P

B.语句MyClass*p,my;会调用两次类MyClass的构造函数

C.对语句*P.SetVariabte(5)的调用是正确的

D.语句p->SetVariable(5)与语句my.SetVariable(5)等价


正确答案:D
解析: 语句p=&my,是把对象my的地址值赋值给指针变量P;语句MyClass*p,my;,由于p只是一个指向对象的指针,因此定义指针p不调用构造函数,所以此语句只调用一次构造函数;讨成员函数的引用可以通过两种形式:指针->成员函数(形参表)或者对象名、成语函数名(形参表)。

第10题:

要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是( )

A.MyClass p=MyClass;

B.MyClass p=new MyClass;

C.MyClass&p=new MyClass

D.MyClassa,&p=a;


正确答案:D
解析:选项A错误不存在这样的定义方式;选项B定义了一个MyClass类的对象p;选项C是Java里的定义方式。

更多相关问题