跳转至

练习05-数据的共享与保护

练习05-数据的共享与保护

题量: 23 满分: 100
作答时间:04-29 19:37 至_05-30 19:37_

1.(单选题) 静态成员函数没有( )。

  • A. this指针
  • B. 返回值
  • C. 指针参数
  • D. 返回类型

2.(单选题) 关于静态数据成员的特性,下列哪一个说法是错误的( )。

  • A. 静态数据成员不是所有对象所共有的
  • B. 声明静态数据成员时要在前面加static来修饰
  • C. 静态数据成员在类体外进行初始化
  • D. 引用静态成员数据时要在前面加类名和作用域运算符

3.(单选题) 下面关于友元的描述中,错误的是( )。

  • A. 友元函数可访问该类的私有成员
  • B. 一个类的友元类中的成员都是这个类的友元
  • C. 友元可以提高程序的运行效率
  • D. 类与类之间的友元关系可以继承

4.(单选题) 已知类A是类B的友元,类B是类C的友元,则( )。

  • A. 类A一定是类C的友元
  • B. 类C的成员函数可以访问类B的对象的任何成员
  • C. 类C一定是类A的友元
  • D. 类A的成员函数可以访问类B的对象的任何成员

5.(单选题) 下列关于友元函数的描述中,错误的是( )。

  • A. 友元函数不是成员函数
  • B. 友元函数只可访问类的私有成员
  • C. 友元函数的调用方法同一般函数
  • D. 友元函数可以是另一类中的成员函数

6.(单选题) 如果类A被说明成类B的友元,则( )。

  • A. 类A的成员即类B的成员
  • B. 类B的成员即类A的成员
  • C. 类A的成员函数不得访问类B的成员
  • D. 类B不一定是类A的友元

7.(单选题) 类A是类B的友元,类B是类C的友元,则下列说法正确的是( )。

  • A. 类B是类A的友元
  • B. 类C是类A的友元
  • C. 类A是类C的友元
  • D. 以上都不对

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

  • A. const void show()
  • B. void const show()
  • C. void show() const
  • D. void show(const)

9.(单选题)

有如下程序:

#include<iostream>  
#include<cmath>  
using std::cout;  
class Point{  
public:  
  friend double distance(const Point &p); //p距原点的距离  
  Point(int xx=0,int yy=0):x(xx),y(yy){  }    //①  
private:  
  int x,y;  
};  
double distance(const Point &p)         //②  
{    
  return sqrt(p.x*p.x+p.y*p.y);    
}  
int main(){  
  Point p1(3,4);  
  cout<<distance(p1);      //③  
}  
下列叙述中正确的是( )。
- A. 程序编译正确
- B. 程序编译时语句①出错
- C. 程序编译时语句②出错
- D. 程序编译时语句③出错

10.(单选题)

已知类MyClass的定义如下,其中有编译错误的函数是( )。

Class MyClass{          
  int  data;  
public:  
  void fun1(MyClass& c)  {  cout<<c.data;  }  
  static void fun2(MyClass& c)  { cout<<c.data;  }  
  void fun3() {  cout<<data;  }  
  static void fun4() { cout<<data;  }  
};  
- A. fun1
- B. fun2
- C. fun3
- D. fun4

11.(单选题)

有如下类的定义,错误的语句是( )。

class A{   
public:  
  A(int x ): ref(x) {   }   // ①  
  A(): ref( 0 ) {    }      // ②  
private:  
  static int val=5;          // ③  
  const int ref;             // ④  
};  
- A. ①
- B. ②
- C. ③
- D. ④

12.(单选题) 如下程序段的输出结果是( )。

int i=4,j=1;  
int main(){  
  int i=8,j=i;  
  cout<<i<<j<<endl;  
}  
- A. 44
- B. 41
- C. 88
- D. 81

13.(单选题) 下列有关类成员的叙述中,正确的是( )。

  • A. 友元函数是类的成员函数
  • B. 类成员的默认访问权限是私有的
  • C. 类成员函数必须声明为公有的
  • D. 类的静态数据成员不能是常成员

14.(单选题) 有如下类定义

class Test{  
  char a;  
  const char b;  
public:  
  Test(char c) {a=c;b=c;}        //第1行  
  void f(char aa) const{  a=aa;  }  //第2行  
  void g(char bb) {  b=bb;  }      //第3行  
  char h()const{  return a; }        //第4行  
};  
编译时没有错误的行是( )。
- A. 第1行
- B. 第2行
- C. 第3行
- D. 第4行

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. ④

16.(单选题) 有如下类定义:

class Point{  
private:  
  static int how_many;  
};  
(      ) how_many=0;  
要初始化 Point 类的静态成员 how_many,空白处应填入的内容是( )。
- A. int
- B. static int
- C. int Point::
- D. static int Point::

17.(单选题)

有如下类和对象的定义:

class Constants{  
public:  
  static double getPI(){   return 3.1416;   }  
};  
Constants constants;  
下列各组语句中,能输出 3.1416 的是( )。
- A. cout<getPI();和 cout<<Constants::getPI();
- B. cout<<constants.getPI();和 cout<<Constants.getPI();
- C. cout<getPI();和 cout<getPI();
- D. cout<<constants.getPI();和 cout<<Constants::getPI();

18.(单选题) 如下程序的输出结果是( )。

#include<iostream>  
using namespace std;  
class XA{               
  int a;  
public:  
  static int b;  
  XA(int an):a(an){   b++;  }  
  int getA(){  return a;  }  
};  
int XA::b=0;  
int main(){  
  XA d1(4),d2(5);  
  cout<<d1.getA()+d2.getA()+XA::b+d1.b<<endl;  
  return 0;  
}  
- A. 9
- B. 11
- C. 13
- D. 15

19.(单选题) 如下程序的输出结果是( )。

#include<iostream>  
using namespace std;  
class VAC{  
public:  
  int f() const { return 3; }  
  int f() {  return 5;  }  
};  
int main(){  
  VAC v1;  
  const VAC v2;  
  cout<<v1.f()<<v2.f();  
  return 0;  
}  
- A. 53
- B. 35
- C. 55
- D. 33

20.(单选题) 如下程序的输出结果是( )。

#include<iostream>  
using namespace std;  
class A{  
public:  
  A(int i=0):r1(i) { }  
  void print() {cout<<'E’<<r1<<'-';  }  
  void print() const {  cout<<'C'<<r1*r1<<'-';  }  
  void print(int x) {  cout <<'P'<<r1*r1*r1<<'-';  }  
private:  
  int r1;  
};  
int main(){  
  A a1;  
  const A a2(4);  
  a1.print(2);  
  a2.print();  
  return 0;  
}  
- A. P8-E4
- B. P8-C16-
- C. P0-E4-
- D. P0-C16-

21.(单选题) 所有在函数中定义的变量及函数的形式参数,都属于( )。

  • A. 全局变量
  • B. 局部变量
  • C. 静态变量
  • D. 常量

22.(单选题)

如下程序的输出结果是( )。

#include <iostream>  
#include <cstring>  
using namespace std;  
class Toy{  
public:  
  Toy(char* _n) { strcpy (name,_n); count++;}  
  ~Toy(){ count--; }  
  char* GetName(){ return name; }  
  static int getCount(){ return count; }  
private:  
  char name[10];  
  static int count;  
};  
int Toy::count=0;  
int main(){  
  Toy t1("Snoopy"),t2("Mickey"),t3("Barbie");  
  cout<<t1.getCount()<<endl;  
}  
- A. 1
- B. 2
- C. 3
- D. 运行时出错

23.(单选题) 已知类IMS中两个成员函数的声明以及对象obj1和obj2的定义如下,则下列语句中,产生编译错误的是( )。

void listen() const;  
void speak();  
IMS obj1;  
const IMS obj2;  
- A. obj1.listen();
- B. obj1.speak();
- C. obj2.listen();
- D. obj2.speak();


练习05-数据的共享与保护答案

正确答案列表:

  1. A
  2. A
  3. D
  4. D
  5. B
  6. D
  7. D
  8. C
  9. A
  10. D
  11. C
  12. C
  13. B
  14. D
  15. B
  16. C
  17. D
  18. C
  19. A
  20. D
  21. B
  22. C
  23. D