更多“5、有以下类的定义,其中出错的位置是()。 A. class Csample { public: Csample(); // A int a=10; // B Csample(int a0); // C ~Csample(); // D };”相关问题
  • 第1题:

    使用VC6打开考生文件夹下的工程test6_1,此工程包含一个源程序文件test6_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

    Constructor2

    Constructor1

    i=0

    i=10

    Destructor

    源程序文件test6_1.cpp清单如下:

    include<iostream.h>

    class CSample

    {

    int i;

    public;

    CSample(){cout<<"Constructorl"<<endl;i=0;)

    CSample(int val){cout<<"Constructor2"<<endl;i=val;}

    ~CSample()(cout<<"Destructor"<<endl;)

    void disp();

    };

    /**********found********/

    void disp()

    {

    cout<<"i=”<<i<<endl;

    }

    void main()

    {

    CSample *a,b(10);

    /**********found*********/

    a->disp();

    /**********found*********/

    b->disp();

    }


    正确答案:(1)错误:void disp() 正确:void CSample::disp() (2)错误:a->disp();    正确:a=new CSample;   a->disp(); (3)错误:b->disp(); 正确:b.disp();
    (1)错误:void disp() 正确:void CSample::disp() (2)错误:a->disp();    正确:a=new CSample;   a->disp(); (3)错误:b->disp(); 正确:b.disp(); 解析:(1)主要考查考生对于类的成员函数定义格式的熟练掌握,对于类体外函数的实现,应该使用作用域符“::”,按照返回值类型 类名::函数名(参数列表)的形式进行说明;
    (2)主要考查考生对于动态存储分配的掌握,根据前面的定义,a是一个指针类型的变量,指向一个对象,但是并没有被初始化,此时a中的数据无任何意义,应该使用动态存储分配new生成一个新的对象,并将返回的指针赋值给a;
    (3)主要考查对象指针与对象在调用成员函数时格式的不同,b是一个对象变量,使用b调用成员函数应该用“.”运算符。

  • 第2题:

    若类A和类B的定义如下

    class A

    {

    int i,j;

    public:

    int geti( )

    {

    return i;

    }

    };

    class B:public A

    {

    int k:

    public:

    void make( )

    {

    k=i*j;

    }

    };

    则上述定义中非法的语句是

    A.k=i*j

    B.int k;

    C.return i;

    D.void make()


    正确答案:A
    解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

  • 第3题:

    有如下类定义:

    class Point{

    public:

    Point(int xx=0,int yy=0):x(xx),y(yy) { }

    private:

    int x,y;

    };

    class Circle:public Point{

    public:

    Circle(int r):radius(r) { }

    private:

    int radius;

    };

    派生类Circle中数据成员的个数是( )。

    A、3

    B、1

    C、5

    D、2


    答案:A
    解析:本题考查默认构造函数和带参数的构造函数,题目中定义一个对象a(2)以及对象数组b[3],共执行3次构造函数,对象指针不调用构造函数。


  • 第4题:

    若类A和类B的定义如下: class A { int i,j; public: int geti () { return i; } }; class B : public A { int k; public: void make () { k=i*j; } }; 则上述定义中非法的语句是

    A.k=i*j;

    B.int k;

    C.return i;

    D.void make()


    正确答案:A
    解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

  • 第5题:

    有如下类定义:

    class XX{

    int xdata;

    public:

    xx(int n=O):xdata(n){}

    };

    class YY:public XX{

    int ydata;

    public:

    YY(int m=0,int n=O):XX(m),ydata(n){}

    };

    YY类的对象包含的数据成员的个数是

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    解析:派生类的数据成员包括其基类的数据成员和派生类本身新增的数据成员,由于YY继承了XX,所以YY类的对象包含2个数据成员,即基类中的成员xdata和新增成员ydata。

  • 第6题:

    若类A和类B的定义如下: class A [ int i,j; public: int geti() { return i; } }; class B:public A { int k; public: void make() { k=i*j; } }; 则上述定义中非法的表达式是

    A.k=i*j

    B.int k;

    C.retum i;

    D.void make()


    正确答案:A
    解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

  • 第7题:

    若类A和类B的定义如下: class A { int i,j; public: int geti() { return i; } }; class B: public A { int k; public: void make() { k=i*j } }; 则上述定义中

    A.k=i*j;

    B.int k;

    C.return i;

    D.void make()


    正确答案:A
    解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

  • 第8题:

    有以下程序: include class A { intx; public: A(int a) { x=a;} friend class B;

    有以下程序:

    include<iostream.h>

    class A

    {

    int x;

    public:

    A(int a)

    {

    x=a;

    }

    friend class B;

    }

    class B{

    public:

    void print(A a){

    a. x--;

    cout<<a.x<<end1;

    }

    };

    void main()

    {

    A a(10);

    B b;

    b.print(a) ;

    }

    程序执行后的输出结果是【 】。


    正确答案:9
    9 解析:本题考核友元类的应用。在程序中,类B是类A的友元类,因此,在类B的所有成员函数中均可访问类A的任何成员。在main()中,先定义类A的一个对象a(10)和类B的一个对象b。然后通过对象b调用其成员函数print输出对象a的私有成员x的值减1即9。

  • 第9题:

    有如下类定义: Class AA{ int a: PubliC: AA(int n=O):a(n){} }; Class BB:publiC AA{ publiC: BB(int n) }; 其中横线处的缺失部分是( )。

    A.:a(n){}

    B.:AA(n){}

    C.{a(n);}

    D.{a=n;}


    正确答案:B
    本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即a为私有变量。所以本题答案为B。

  • 第10题:

    下列程序test类中的变量e的最后结果为( )。 public class test { public static void main (String args[]) { int a=10; int b; int c; if(a>50) { b=9; } c=b+a; } }

    A.10

    B.0

    C.19

    D.编译出错


    正确答案:D

  • 第11题:

    在下列源代码文件Test.java中, ( )是正确的类定义。

    A.public class test{

    B.public class Test{ public int x=0;public int x=0; public test (intx) public Test (int x){ {this.x=x; this.x=x;} }} }

    C.public class Test extends T1,T2{

    D.protected class Test extends T2{ public int=0;public int x=0; public Test(int x){Public Test (int x){ this.x=x;this.x=x: }} }}


    正确答案:B

  • 第12题:

    在下列源代码文件Test.java中,哪个选项是正确的类定义? ( )

    A.public class test { public int x=0; public test(int x) { this.x=x; } }

    B.public class Test { public int x=0; public Test(int x) { this.x=x; } }

    C.public class Test extends Ti,T2 { public int x=0; public Test(int x) { this.x=x; } }

    D.protected class Test extends T2 { public int x=0; public Test(int x) { this.x=x; } }


    正确答案:B

  • 第13题:

    有以下程序: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的成员初始化列表。

  • 第14题:

    在如下源代码文件Test.java中, 哪个是正确的类定义?()

    A.public class test { public int x = 0; public test(int x) { this.x = x; } }

    B.public class Test{ public int x=0; public Test(int x) { this.x = x; } }

    C.public class Test extends T1, T2 { public int x = 0; public Test (int x) { this.x = x; } }

    D.public class


    正确答案:BD

  • 第15题:

    有如下类定义: class AA { int a; public: int getRef()const{ return &a; } //① int getValue()const{ return a; } //② void set(int n)const{ a=n; } //③ friend void show(AA aa)const{ cout<<a; } //④ }; 其中的四个函数定义中正确的是( )。

    A.①

    B.②

    C.③

    D.④


    正确答案:B
    解析:此题考查了常成员函数和友元函数的概念。选项A)中,getRef()函数的返回值和函数类型不符,故错误;选项C)中set()常成员函数改变了数据成员的值,这是不允许的;选项D)中show()函数被同时定义成友元函数和常成员函数是错误的。

  • 第16题:

    有以下程序:include using namespace std;class A{private:int a;public:A (int i){a

    有以下程序: #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 obi (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的成员初始化列表。

  • 第17题:

    若类A和类B的定义如下:includeclass A{int i*j;public:int geti(){return i;}};class

    若类A和类B的定义如下: #include<malloc.h> class A { int i*j; public: int geti() { return i; } }; class B: public A { int k; public: void make() { k=i*j; } ); 则上述定义中非法的表达式是( )。

    A.k=i*j;

    B.int k;

    C.return i;

    D.void make();


    正确答案:A
    解析:因为派生类不能访问基类的私有成员i和j(默认情况下,成员的属性为私有),所以表达式k=i*j是非法的。其余的访问权限都是许可的。

  • 第18题:

    在下列源代码文件Test.java中,正确定义类的代码是( )。

    A.pblic class test { public int x=0; public test(int x) { this. x=x;} }

    B.public class Test { public int x=0; public Test(int x) { this. x=x;} }

    C.public class Test extends T1,T2{ public int x = 0; public Test(int x){ this. x = x; } }

    D.protected class Test extends T2{ public int x = 0; public Test(int x) { this. x = x; } }


    正确答案:B
    解析:本题主要考查类声明格式为[修饰符]class类名[extends父类名][implements类实现的接口列表],选项A中源文件名与程序名不相同,Java不支持多重继承所以选项C错误,选项D中类的访问权限不对,应为public。

  • 第19题:

    有如下类定义: class Foo { public: Foo(int v) : value(v) { } // ① ~Foo() { } // ② private: Foo() { } // ③ int value = 0; // ④ }; 其中存在语法错误的行是( )。

    A.①

    B.②

    C.⑧

    D.④


    正确答案:D
    解析:此题考查的是类的定义。C++语言规定,在类体内不允许对所定义的数据成员进行初始化。

  • 第20题:

    以下程序的执行结果是______。 include class CSample{ private: int n; static int

    以下程序的执行结果是______。

    include<iostream.h>

    class CSample

    {

    private:

    int n;

    static int k:

    public:

    CSample (int i) {n=i;k++;};

    voiddisp();

    } ;

    void CSample::disp()

    {

    cout <<"n="<<n<<",k="<<k<<endl

    }

    int CSample:


    正确答案:n=10k=3 n-20k=3 n=30k=3
    n=10,k=3 n-20,k=3 n=30,k=3

  • 第21题:

    下面程序运行的结果是()。includeusing namespace std;class A{ protected:int a; pub

    下面程序运行的结果是( )。 #include<iostream> using namespace std; class A{ protected: int a; public: void input(int i) {a=i;} }; class B{ protected: int a; public: void input(int j) {a=j;} }; class C: public A, public B { int x; public: void input() {x=A::a * B::a;cout<<x<<endl;} }; void main() { C c; c.A::input(5); c.B::input(8); c.input(); }

    A.5

    B.8

    C.40

    D.编译出错


    正确答案:C
    解析:用成员名限定法来消除二义性,故答案为C。

  • 第22题:

    若类A和类B的定义如下: class A { public: int i,j; void get(); }; class B:A{ int i, j; protected; int k; public: void make(); }; void B: :make()(k=i*j;} 则其中 ______ 是非法的表达式。

    A.void get();

    B.int k;

    C.void make();

    D.k=i*j;


    正确答案:D

  • 第23题:

    下列类的定义中,有( )处语法错误。 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: int d; };

    A.1

    B.2

    C.3

    D.4


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

  • 第24题:

    单选题
    如果Assistant生成的数据分析报告不能正常显示出来,需要到以下哪个安装目录去查找:()
    A

    Bin/Device;

    B

    Bin/Analyse;

    C

    Sample;

    D

    Template;


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