练习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; }
};
- 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; // ④
};
- B. ②
- C. ③
- D. ④
12.(单选题) 如下程序段的输出结果是( )。
- 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; } //④
};
- B. ②
- C. ③
- D. ④
16.(单选题) 有如下类定义:
要初始化 Point 类的静态成员 how_many,空白处应填入的内容是( )。- A. int
- B. static int
- C. int Point::
- D. static int Point::
17.(单选题)
有如下类和对象的定义:
- A. cout<
- B. cout<<constants.getPI();和 cout<<Constants.getPI();
- C. cout<
- 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;
}
- 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;
}
- 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;
}
- 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;
}
- B. 2
- C. 3
- D. 运行时出错
23.(单选题) 已知类IMS中两个成员函数的声明以及对象obj1和obj2的定义如下,则下列语句中,产生编译错误的是( )。
- A. obj1.listen();- B. obj1.speak();
- C. obj2.listen();
- D. obj2.speak();
练习05-数据的共享与保护答案
正确答案列表:
- A
- A
- D
- D
- B
- D
- D
- C
- A
- D
- C
- C
- B
- D
- B
- C
- D
- C
- A
- D
- B
- C
- D