38、已知ClassA是ClassB的父类,在ClassC中定义了ClassA类型的对象obj,且提供了方法setClassA(ClassA obj)用于给obj对象赋值,以下叙述有误的是A.可以在setClassA()方法中传递一个ClassB类型的对象#B.如果在类ClassA中定义了方法method1(),在类ClassB中覆盖了该方法,当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中调用obj的method1()方法时将执行ClassB的method1()方法#C

题目

38、已知ClassA是ClassB的父类,在ClassC中定义了ClassA类型的对象obj,且提供了方法setClassA(ClassA obj)用于给obj对象赋值,以下叙述有误的是

A.可以在setClassA()方法中传递一个ClassB类型的对象#B.如果在类ClassA中定义了方法method1(),在类ClassB中覆盖了该方法,当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中调用obj的method1()方法时将执行ClassB的method1()方法#C.可以在ClassC中定义一个新的方法setClassA(ClassB obj),它与原有方法setClassA(ClassA obj)构成一组重载方法#D.如果在ClassB中定义了ClassA没有的新方法method2(),当setClassA()方法参数传递的是ClassB类型的对象时,在ClassC中可以调用obj对象的method2()方法

相似考题
更多“38、已知ClassA是ClassB的父类,在ClassC中定义了ClassA类型的对象obj,且提供了方法setClassA(ClassA obj)用于给obj对象赋值,以下叙述有误的是”相关问题
  • 第1题:

    Whatproducesacompilererror?()

    A.classA{publicA(intx){}}

    B.classA{}classBextendsA{B(){}}

    C.classA{A(){}}classB{publicB(){}}

    D.classZ{publicZ(int){}}classAextendsZ{}


    参考答案:D

  • 第2题:

    有如下程序:includeusing namespace std;classA{public:A(){cout<<"A";}};class B{pu

    有如下程序: #include<iostream> using namespace std; classA { public: A(){cout<<"A";} }; class B{public:B(){cout<<"B";}}; class C:public A { B b; public: C(){cout<<"C";} }; int main(){C obj;return 0;} 执行后的输出结果是( )

    A.ABC

    B.BAC

    C.ACB

    D.CBA


    正确答案:A

  • 第3题:

    下面程序输出的结果为( )。 #include"iostream.h" classA {public: A(){cOUt<<"CLASSA"<<endl;} ~A(){}}; ClaSSB:publicA {public: B(){cout<<"CLASSB"<<endl;} ~B(){}}; voidmain() {A*P; P=newB: B*q: q=newB;}

    A.CLASSA

    B.CLASSA CLASSBCLASSB CLASSB

    C.CLASSA

    D.CLASSA CLASSBCLASSB CLASSACLASSB CLASSBCLASSB


    正确答案:C
    C。【解析】本题考查类的继承、类的实例化和构造函数、析构函数的调用方式以及何时调用。每实例化一个类就要调用其构造函数,结束运行该实例后调用析构函数。

  • 第4题:

    有如下类定义: classB{ public:voidfunl(){} privace:voidfun2(){} protected:voidfun3(){} }; classD:publicB{ protected:voidfun4(){} }; 若obj是类D的对象,则下列语句中不违反访问控制权限的是( )。

    A.obj.fun1();

    B.obj.fun2();

    C.obj.fun3();

    D.obj.fun4();


    正确答案:A
    A。【解析】fun2为Sample的私有函数无法访问,fun3与fun4都为protected函数,所以也没有访问权限。

  • 第5题:

    若有如下类定义: class B{ void funl(){} protected: double varl: public: void fun2(){} }; class D:public B{ protected: void fun3(){} }; 已知obj是类D的对象,下列语句中不违反类成员访问控制权限的是( )。

    A.obj.funl();

    B.obj.varl;

    C.obj.fun2();

    D.obj.fun3();


    正确答案:C

  • 第6题:

    GPRS服务类型有CLASS A、CLASS B、CLASS C三种:()在上网的时候会将电话功能屏蔽,当有电话进来的时候自动切断网络;()可以同时使用网络和电话功能;()则是单纯的网络应用, 不提供电话功能。

    • A、CLASSB;CLASSA;CLASSC
    • B、CLASSA;CLASSB;CLASSC
    • C、CLASSC;CLASSB;CLASSA
    • D、CLASSC;CLASSA;CLASSB

    正确答案:A

  • 第7题:

    Given: class ClassA {} class ClassB extends ClassA {} class ClassC extends ClassA {} and: ClassA p0 = new ClassA(); ClassB p1 = new ClassB(); ClassC p2 = new ClassC(); ClassA p3 = new ClassB(); ClassA p4 = new ClassC(); Which three are valid?()

    • A、p0 = p1;
    • B、p1 = p2;
    • C、p2 = p4;
    • D、p2 = (ClassC)p1;
    • E、p1 = (ClassB)p3;
    • F、p2 = (ClassC)p4;

    正确答案:A,E,F

  • 第8题:

    C#中TestClass为一自定义类,其中有以下属性定义: publicvoidProperty{…}开卷考 使用以下语句创建了该类的对象,并使变量obj引用该对象: TestClassobj=newTestClass(); 那么,可通过什么方式访问类TestClass的Property属性?()

    • A、Obj,Property
    • B、MyClass.Property
    • C、obj::Property
    • D、obj.Property()

    正确答案:A

  • 第9题:

    C#中TestClass为一自定义类,其中有以下属性定义 publicvoidProperty{…} 使用以下语句创建了该类的对象,并使变量obj引用该对象: TestClassobj=newTestClass(); 那么,可通过什么方式访问类TestClass的Property属性?()

    • A、Obj,Property;
    • B、MyClass.Property;
    • C、obj::Property;
    • D、obj.Property;

    正确答案:D

  • 第10题:

    框架提供的方法$getClass(obj)能返回对象的类型信息


    正确答案:正确

  • 第11题:

    单选题
    C#中的TestClass为一自定义类,其中有如下属性定义:   public void Property{……}  使用以下语句创建了该类的对象,并让变量obj引用该对象。   TestClass obj=new TestClass();  那么,可通过()方式访问类TestClass的Property属性。
    A

     MyClass. Property

    B

     obj. Property

    C

     TestClass. Property

    D

     obj. Property()


    正确答案: B
    解析: 暂无解析

  • 第12题:

    多选题
    现有:  class ClassA  {}  class ClassB extends ClassA  {)      class ClassC extends ClassA  {)     以及:  ClassA p0=new ClassA();      ClassB pl=new ClassB();      ClassC p2=new ClassC();     ClassA p3=new ClassB();    ClassA p4=new ClassC(); 下列哪些是正确的?()
    A

    p0=pl;

    B

    p1 =p2;

    C

    p2=p4;

    D

    p2 = (ClassC)pl;

    E

    p1 = (ClassB)p3;

    F

    p2 =  (Classc)p4;


    正确答案: A,F
    解析: 暂无解析

  • 第13题:

    若有以下程序:includeusingnamespacestd;classA{private:int x; public:int x;void s

    若有以下程序: #include<iostream> usingnamespacestd; classA { private: int x; public: int x; void setx(int i) { x=i; } int getx() { return x; } }; class B:public A { private: int m; public: int p; void setvalue (int a,int b,int C) { setx(A) ; z=b; m=c; } void display() { cout<<getx()<<","<<z<<","<<m<<end1; } }; int main() { B obj; obj.setvalue(2,3,4); obj.display(); return 0; } 程序运行以后的输出结果是

    A.产生语法错误

    B.2,3,4

    C.2,2,2

    D.4,3,2


    正确答案:B
    解析:本题考核继承与派生。当类的继承方式为公有继承时,基类的公有成员和保护成员分别作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。其他外部使用者只能通过派生类的对象访问继承宋的公有成员。在本题中,数据成员z和函数setx都是基类A的公有成员,它们经过公有继承以后,在派生类B中还是公有成员,而派生类B中的函数setvalue和display都是公有成员,可以通过对象对它们进行访问。所以程序中对各成员的访问是正确的。本程序的功能是输出已设置的各成员的值。

  • 第14题:

    若有以下程序: #include<iostream> usillgnamespacestd; classA {private: inta; public: A(inti) {a=i;} voiddisp() {cout<<a<<",";}}; classB {private: intb; public: B(intj) {b=j;} voiddisp() {COUt<<b<<",";}}; classC:publicB,publicA {private: intC; public: C(intk):A(k-2),B(k+2) (c=k;) voiddisp() {A::disp(); B::disp(); cout<<c<<endl;}}; intmain() {Cobj(10); obj.disp(); return0;} 程序执行后的输出结果是( )。

    A.10,10,10

    B.10,12,14

    C.8,10,12

    D.8,12,10


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

  • 第15题:

    设有以下定义和程序:includeclassA1{public:void show1(){ cout<<"classA1”<

    设有以下定义和程序: #include<iostream.h> classA1 { public: void show1() { cout<<"classA1”<<end1; } }; classA2:public A1 { public: void show2() { cout<<"classA2"<<end1; } }; class A3:protected A2 { public: voidshow3() { cout<<"class A1”<<end1; } }; void main() { A1obj1; A2obj2; A3obj3; } 则以下不合语法的调用语句是

    A.obj1.show1();

    B.obj2.show1();

    C.obj3.show1();

    D.obj2.show2();


    正确答案:C
    解析:本题考核派生类的使用以及访问权限问题。C++中,通过类的对象只能访问类的公有成员,不能访问类的保护成员和私有成员。A2是A1的公有派生类,A3是A2的保护派生类,所以类A1的成员函数show1()在类A3中呈现保护属性,不能通过A3类的对象访问。

  • 第16题:

    下列程序执行结果是( )。 #include(iostream.h) classA {public: inta; A( ):a(10){cout<<a<<endl;) }; voidmain( ) {Aobj1; Aobj2(obj1); cout<<""<<obj2.a<<endl; }

    A.1010

    B.编译错误缺少拷贝构造函数

    C.10随机数

    D.随机数随机数


    正确答案:A
    A。【解析】本题考查拷贝构造函数的知识。如果类中没有实现拷贝构造函数可以完成数据成员的自动赋值,对于复杂对象,则可能需要显式定义拷贝构造函数。

  • 第17题:

    下面程序输出的结果为( )。 include"iostream.h"classA{public: A(){cOUt<<&qu

    下面程序输出的结果为( )。

    #include"iostream.h"

    classA

    {public:

    A(){cOUt<<"CLASSA"<<endl;}

    ~A(){}};

    ClaSSB:publicA

    {public:

    B(){cout<<"CLASSB"<<endl;}

    ~B(){}};

    voidmain()

    {A*P;

    P=newB:

    B*q:

    q=newB;}

    A.CLASSB

    B.CLASSA CLASSB CLASSB

    C.CLASSA CLASSB CLASSA CLASSB

    D.CLASSA CLASSB CLASSB CLASSB


    正确答案:C
    C。【解析】本题考查类的继承、类的实例化和构造函数、析构函数的调用方式以及何时调用。每实例化一个类就要调用其构造函数,结束运行该实例后调用析构函数。

  • 第18题:

    已知classA中有数据成员inta,如果定义了A的两个对象A1、A2,它们各自的数据成员a的值可以不同吗?


    正确答案:可以,类的每一个对象都有自己的数据成员。

  • 第19题:

    现有:  class ClassA  {}  class ClassB extends ClassA  {)      class ClassC extends ClassA  {)     以及:  ClassA p0=new ClassA();      ClassB pl=new ClassB();      ClassC p2=new ClassC();     ClassA p3=new ClassB();    ClassA p4=new ClassC(); 下列哪些是正确的?()

    • A、p0=pl;
    • B、p1 =p2;
    • C、p2=p4;
    • D、p2 = (ClassC)pl;
    • E、p1 = (ClassB)p3;
    • F、p2 =  (Classc)p4;

    正确答案:A,E,F

  • 第20题:

    C#中MyClass为一自定义类,其中有以下方法定义publicvoidHello(){⋯⋯}使用以下语句创建了该类的对象,并使变量obj引用该对象:MyClassobj=newMyClass();那么,可如何访问类MyClass的Hello方法?()。

    • A、obj.Hello();
    • B、obj::Hello();
    • C、MyClass.Hello();
    • D、MyClass::Hello();

    正确答案:A

  • 第21题:

    以下代码中能够实现显示对象的选项的是()。

    • A、obj.style.display;’block’;
    • B、obj.style.display=’block’;
    • C、obj.display=’block’;
    • D、obj.style.display;’none’;

    正确答案:B

  • 第22题:

    问答题
    类ClassB从ClassA派生,那么ClassA*a=newClassB(…);试问该表达是否合法?为什么?

    正确答案: 派生类的指针指向基类的对象是错误的,不能通过编译的;基类的指针可以指向派生类的对象,调用派生类的函数。
    解析: 暂无解析

  • 第23题:

    多选题
    Given: class ClassA {} class ClassB extends ClassA {} class ClassC extends ClassA {} and: ClassA p0 = new ClassA(); ClassB p1 = new ClassB(); ClassC p2 = new ClassC(); ClassA p3 = new ClassB(); ClassA p4 = new ClassC(); Which three are valid?()
    A

    p0 = p1;

    B

    p1 = p2;

    C

    p2 = p4;

    D

    p2 = (ClassC)p1;

    E

    p1 = (ClassB)p3;

    F

    p2 = (ClassC)p4;


    正确答案: D,A
    解析: 暂无解析

  • 第24题:

    单选题
    10. public class ClassA {  11. public void methodA() {  12. ClassB classB = new ClassB();  13. classB.getValue();  14. }  15. }  And:  20. class ClassB {  21. public ClassC classC;  22.  23. public String getValue() {  24. return classC.getValue();  25. }  26. }  And:  30. class ClassC {  31. public String value;  32.  33. public String getValue() {  34. value = “ClassB”;  35. return value;  36. }  37. }  Given:  ClassA a = new ClassA();  a.methodA();  What is the result?()
    A

     Compilation fails.

    B

     ClassC is displayed.

    C

     The code runs with no output.

    D

     An exception is thrown at runtime.


    正确答案: C
    解析: 暂无解析