第三次作业(选择题)

2-1关于this指针的以下说法,正确的是(A)。

A.当创建一个对象后,this指针就指向该对象

B.this指针必须显式说明

C.this指针指向成员函数

D.this指针的值不会随着对象的不同而改变

2-2下列对重载函数的描述中,(A )是错误的。

A.重载函数中不允许使用默认参数

B.重载函数中编译根据参数表进行选择

C.不要使用重载函数来描述毫无相干的函数

D.构造函数重载将会给初始化带来多种方式

2-3在下面类声明中,关于生成对象不正确的是(C )。

class point

{ public:

int x;

int y;

point(int a,int b) {x=a;y=b;}

};

A.point p(10,2);

B.point *p=new point(1,2);

C.point *p=new point[2];

D.point *p[2]={new point(1,2), new point(3,4)};

 

 

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

A.const void Show();

B.void const Show();

C.void Show() const;

D.void Show(const);

2-5为类提供对外接口的是( A)

A.公有成员函数

B.私有成员函数

C.保护成员函数

D.友元函数

2-6已知类A中的一个成员函数说明为void fun(A &a);,则A &a的含义是( C)

A.将a的地址值赋给变量fun

B.指向类A的指针为a

C.a是类A的对象引用,用来做函数fun()的形参

D.变量A与a按位相与运算后作为函数fun()的参数

2-7假如有以下类A:

classA{

     public:

     int func(int a){return a*a;)

};

以下程序片段中不正确的是(D )

A.A a;a.func(5);

B.A*p=new A; p->func(5);

C.A a; A& r=a;r.func(5);

D.A a,b; if(a!=b) a.func(5);

2-8给定以下类声明,哪个成员函数可能改变成员变量data? (D)

class A {

public:

 void f1 (int d);

 void f2 (const int &d);

 void f3 (int d) const;

private:

   int data;

};

A.f1

B.f2

C.f3

D.f1和f2

2-9假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为(B)

A.x.a

B.x.a()

C.x->a()

D.(*x).a()

2-10下面关于成员函数和常成员函数的程序,输出结果是(C)

#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

 

2-11下面关于成员函数和常成员函数的程序,其主函数中错误的语句是(C)

#include<iostream>

using namespace std;

class MyClass {

public:

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

    void Set(int x) {val = x;}

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

private:

    int val;

};

int main() {

    const MyClass obj1(10);

    MyClass obj2(20);

    obj1.Print(); //语句 1

    obj2.Print(); //语句 2

    obj1.Set(20); //语句 3

    obj2.Set(30); //语句 4

    return 0;

}

A.语句 1

B.语句 2

C.语句 3

D.语句 4

 

2-12

若类A的构造函数定义为

A(int aa=1, int bb=0) { a = aa; b = bb; }

则执行:A x(4);后,x.a和x.b的值分别是(C )

A.1,0

B.1,4

C.4,0

D.4,1

 

2-13

下面程序的运行结果为(C)

#include<iostream.h>

class A

{

  int num;

public:

  A(int i){num=i;}

  A(A &a){num=a.num++;}

  void print(){cout<<num;}

};

void main()

{

  A a (1),b(a);

  a.print();

  b.print();

}

A.11

B.12

C.21

D.22

 

2-14

现有类的定义如下:

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;

};

在main函数中定义该类的l两个对象:const MyClass obj1(10); MyClass obj2(20);

依次执行obj1.Print(); obj2.Print();的输出结果是(C)。

A.val=10 const:val=20

B.const:val=10 const:val=20

C.const:val=10 val=20

D.val=10 val=20

 

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值