单选题已知类IMS中两个成员函数的声明为“void listen()const;”与“void speak();”,另有两个对象的定义为“IMS obj1;”与“const IMS obj2;”,则下列语句中,产生编译错误的是(  )。A obj1.listen(  );B obj1.speak(  );C obj2.listen(  );D obj2.speak(  );

题目
单选题
已知类IMS中两个成员函数的声明为“void listen()const;”与“void speak();”,另有两个对象的定义为“IMS obj1;”与“const IMS obj2;”,则下列语句中,产生编译错误的是(  )。
A

obj1.listen(  );

B

obj1.speak(  );

C

obj2.listen(  );

D

obj2.speak(  );


相似考题
参考答案和解析
正确答案: D
解析:
成员函数是常成员函数时,常对象和一般对象都可以调用它;而对于一般成员函数,则只有一般对象可以调用,常对象调用它将产生错误。函数listen()为常成员函数,一般对象objl和常对象obj2都可以调用;函数speak()为IMS的一般成员函数,只有一般对象obj1可以调用,常对象obj2调用会产生编译错误。
更多“单选题已知类IMS中两个成员函数的声明为“void listen()const;”与“void speak();”,另有两个对象的定义为“IMS obj1;”与“const IMS obj2;”,则下列语句中,产生编译错误的是(  )。A obj1.listen(  );B obj1.speak(  );C obj2.listen(  );D obj2.speak(  );”相关问题
  • 第1题:

    已知类A有公用数据成员a,且有A ohj2;A*const ptr-new A;则下列语句正确的是( )。

    A)ptr->a=100;

    B)ptr=&obj2;

    C)ptr++;

    D)ptr=obj2;


    正确答案:A

    本题主要考察const的使用,const根据其位置的不同修饰不同的成份,从而表现出灵 活的特性,考生容易混淆。此处const修饰的是指针,即指针本身不能改变.故选项BCD都是 错误的。但是指针指向的地址里面的值确实可以改变的,因此选项A是正确答案。 

  • 第2题:

    ( 12 )有如下程序:

    #include <iostream>

    using namespace std

    class Animal{

    public:

    virtual char* getType () const { return "Animal" ; }

    virtual char* getVoice () const { return "Voice" ; }

    };

    Class Dog : public Animal {

    public:

    char* getType ( ) const {return "Dog" ; }

    char* getVoice ( ) const {return "Woof"}

    };

    void type ( Animal& a ) {cout<<a.getType ( ) ; }

    void speak ( Animal a ) {cout<<a.getVoice ( ) ; }

    int main ( ) {

    Dog d; type ( d ) ; cout<<" speak" ; speak ( d ) ; cout<<endi;

    return 0;

    }

    运行时的输出结果是【 12 】 。


    正确答案:

  • 第3题:

    已知类A有公用数据成员a,且有A obj2;A*const ptr=new A;则下列语句正确的是

    A.ptr->a=100;

    B.ptr=&obj2;

    C.ptr++;

    D.ptr=obj2;


    正确答案:A
    本题主要考察const的使用const根据其位置的不同修饰不同的成份从而表现出灵活的特性考生容易混淆。此处const修饰的是指针即指针本身不能改变故选项B、C和D都是错误的。但是指针指向的地址里面的值确实可以改变的因此选项A是正确答案。

  • 第4题:

    有如下类定义: 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()函数被同时定义成友元函数和常成员函数是错误的。

  • 第5题:

    下列类的构造函数不能通过编译,正确的构造函数应该是______。 include class Sample

    下列类的构造函数不能通过编译,正确的构造函数应该是______。

    include<iostream.h>

    class Sample

    {

    public:

    int n;

    const int con;

    Sample(int m) {con=m+1;n=m;}

    void disp( ) {cout<<"normal:n="<<n<<endl;}

    void disp( )const {cout<<"static:n="<<n<<endl;}

    };

    void main( )

    {

    const Sample a (12);

    Sample b (13);

    a.disp( );

    b.isp( );

    cout<<a.n<<","<<b.con<<endl;

    }


    正确答案:Sample(int m):con(m+1){n=m;)
    Sample(int m):con(m+1){n=m;) 解析:本题考察常数据成员的初始化方法。常数据成员的定义必须出现在类体中,而且初始化只能通过构造函数的成员初始化列表进行,而且不能被更新。

  • 第6题:

    有如下类声明: class MyBASE{ int k; public: void set(int n){k=n;} int get( )const{return k;} }; class MyDERIVED:protected MyBASE{ protected: intj; public: void set(int m,int n){MyBASE::set(m);j=n;} int get( )const{return MyBASE::get( )+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:在保护派生的单继承中,基类的公有数据成员和成员函数在派生类中成为保护成员。

  • 第7题:

    已知类 String 的原型为

    class string

    {

    public:

    string(const char *str=null);//普通构造函数

    string(const string &other);//拷贝构造函数

    ---string(void);

    string &operate=(const string &other);//赋值函数

    private:

    char * m-data;//用于保存字符串

    };

    请编写 string 的上述4 个函数


    正确答案:
     

  • 第8题:

    编写类 String 的构造函数、析构函数和赋值函数

    已知类 String的原型为:

    class String

    {

    public:

    String(const char *str = NULL); // 普通构造函数

    String(const String &other); // 拷贝构造函数

    ~ String(void); // 析构函数

    String & perate =(const String &other); // 赋值函数

    private:

    char *m_data; // 用于保存字符串

    };

    请编写 String的上述 4 个函数。


    正确答案:
     

  • 第9题:

    有以下类定义 class Point{ public: Point{int x = 0, int y=0) {_x = x; _y = y;} void Move int xoff, int yoff) {_x +=xoff;_y+=yoff;} void Print() const {cout<<'('<<_x<<','<<_y<<')' << end1;} private: int_x,_y; }; 下列语句中会发生编译错误的是

    A.Point pt;pt.Print();

    B.const Point pt;pt.Print();

    C.Point pt;pt.Move(1, 2);

    D.const Point pt;pt.Move(1, 2)


    正确答案:D
    解析:本题考核常对象、常数据成员与常成员函数。如果将二个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数,D选项中对象pt为常对象,而成员函数Move()不是常成员函数,所以这样调用会发生编译错误。

  • 第10题:

    已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。

    • A、void print()const
    • B、const void print()
    • C、void const print()
    • D、void print(const)

    正确答案:A

  • 第11题:

    单选题
    某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是(  )。
    A

    const void Show();

    B

    void const Show();

    C

    void Show() const;

    D

    void Show(const);


    正确答案: B
    解析:
    常成员函数的说明格式如下:<返回类型><成员函数名>(<参数表>)const,所以对于本题来说无参且无返回值的常成员函数Show,其原型是void Show() const。

  • 第12题:

    单选题
    已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,()是正确的。
    A

    void print()const

    B

    const void print()

    C

    void const print()

    D

    void print(const)


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

  • 第13题:

    ( 28 )有如下程序:

    #include<iostream>

    using namespace std;

    class MyClass{

    public:

    MyClass(int x):val(x) {}

    void Print() const {cout<<"const:val="<<val<<'\t';}

    void Print(){cout<<"val="<<val<<'t';}

    private:

    int val;

    };

    int main(){

    const MyClass obj1(10);

    MyClass obj2(20);

    obj1.Print();

    obj2.Print();

    return 0;

    }

    程序的输出结果是

    A ) val=10 const:val=20

    B ) const:val=10 const:val=20

    C ) const:val=10 val=20

    D ) val=10 val=20


    正确答案:C

  • 第14题:

    有如下类声明: class MyBASE { int k: public; void set(int n){k=n;} int get() const{return k;} }; class MyDERIVED: protected MyBASE { protected: int j; public: void set(int m, int n){MyBASE::set(m);j=n;} int get() const{return MyBASE::get()+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:B

  • 第15题:

    main函数中发生编译错误的语句是______。 include class A { public: int a; const i

    main函数中发生编译错误的语句是______。

    include<iostream.h>

    class A

    {

    public:

    int a;

    const int b;

    A( ):a(10),b(20){}

    void fun( )const

    {

    cout<<"a="<<a<<"\tb="<<b<<endl;

    }

    };

    void main( )

    {

    A obj1;

    const A*ptr=new A;

    ptr=&obj1;

    ptr->a=100;

    ptr->fun( );

    }


    正确答案:ptr->a=100;
    ptr->a=100; 解析:本题考察的是const的使用。const修饰的是指针变量的值,指针本身是可变的,但指针所指对象的值是常量,即ptr->a是不能被改变的。

  • 第16题:

    有如下类定义:

    class Bag {

    public:

    Bag(int p,char s='M'):price(p),size(s) { count++; }

    ~Bag() { count--; }

    int GetPrice() { return price; }

    int GetPrice() const { return price; }

    void SetPrice(int val) const { price=val; }

    private:

    int price;

    char size;

    static int count;

    };

    下列关于类成员的叙述中,正确的是( )。

    A. 成员函数GetPrice存在重定义

    B.构造函数的参数不能设置默认值

    C.析构函数中不能访问静态数据成员

    D.成员函数SetPrice不能定义为常函数


    参考答案:A

  • 第17题:

    某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是

    A.const void Show();

    B.void const Show();

    C.void Show()const;

    D.void Show(const);


    正确答案:C
    解析:本题主要考查对常成员函数的掌握。常成员函数的说明格式为:
      <返回类型><成员函数名>(<参数表>)const;
      本题中的常成员函数无参无返回值,故正确答案为C。

  • 第18题:

    有如下类定义和变量定义:

    class A{

    public:

    A(){data=O; }

    一A(){}

    int GetData()const{ retum data; }

    void SetData(int n) {data=n; }

    private:

    int data;

    };

    const A a;

    A b;

    下列函数调用中错误的是

    A.a.GetData();

    B.a.SetData(10);

    C.b.GetData();

    D.b.SetData(10);


    正确答案:B
    解析:常量是指在程序执行过程中值不改变的量。因为a是常量类型,而a的SetData成员函数会造成a的值被改变,所以B)项调用错误

  • 第19题:

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

    A.①

    B.②

    C.③

    D.④


    正确答案:B
    本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为B。

  • 第20题:

    include<iostream>

    include<string>

    using namespace std;

    class MyClass

    {

    public:

    MyClass(int i=0){member=i;}

    void SetMember(const string m){member="big"+m;m=member;}

    string GetMember(){return member;}

    void print()const{cout<<"Stu:"<<member<<endl;}

    private:

    string member;

    };

    void main()

    {

    MyClass obj1,*obj2;

    string i="wang lin";

    obj2=&obj1;

    obj2->SetMember(i);

    obj1.print();

    }


    正确答案:
    voidSetMember(conststringm){member=”big”+m;m=member;}。const修饰符的形参不能改变。应删去const或者删去m=member。

  • 第21题:

    关于const关键字说法错误的是()

    • A、const关键字可以修饰对象和成员函数
    • B、const对象不能被修改
    • C、const成员函数不能修改类数据成员
    • D、const可以用于说明类

    正确答案:D

  • 第22题:

    若有类W说明class W{int a;public:voidfConst(int&)const;};,则函数fConst的正确定义是()

    • A、void W::fConst(int&k)const{k=a;}
    • B、void W::fConst(int&k)const{k=a++;}
    • C、void W::fConst(int&k)const{cin>>a;}
    • D、void W::fConst(int&k)const{a=k;}

    正确答案:A

  • 第23题:

    单选题
    已知函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是(  )。
    A

    void print()const;

    B

    const void print();

    C

    void const print();

    D

    void print(const);


    正确答案: A
    解析:
    const成员函数说明格式如下:<返回类型><成员函数名>(<参数表>)const。

  • 第24题:

    单选题
    已知类IMS中两个成员函数的声明为“void listen()const;”与“void speak();”,另有两个对象的定义为“IMS obj1;”与“const IMS obj2;”,则下列语句中,产生编译错误的是(  )。
    A

    obj1.listen(  );

    B

    obj1.speak(  );

    C

    obj2.listen(  );

    D

    obj2.speak(  );


    正确答案: C
    解析:
    成员函数是常成员函数时,常对象和一般对象都可以调用它;而对于一般成员函数,则只有一般对象可以调用,常对象调用它将产生错误。函数listen()为常成员函数,一般对象objl和常对象obj2都可以调用;函数speak()为IMS的一般成员函数,只有一般对象obj1可以调用,常对象obj2调用会产生编译错误。