跳转至

练习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