一. 单选题(共3题,37.5分)
1. (单选题)
有如下类定义:
class Test{
public:
Test( ){a=0;c=0;} //①常成员必须在初始化列表中初始化
int f(int a) const {this->a=a;} //②常函数不能修改成员
void h(int b) {Test::b=b;}; //③
static int g( ) {return a;} //④静态函数要通过对象访问成员
private:
int a;
static int b;
const int c;
};
int Test::b=0;
在标注号码的行中,能被正确编译的是()。
- A. ①
- B. ②
- C. ③
- D. ④
正确答案: C
题解:1错于在构造函数中初始化常对象c;
2错于常函数不能修改成员a;
4错于静态函数无法访问非静态数据成员a
2. (单选题)下列对静态数据成员的描述正确的是( )。
- A.
静态数据成员不可以被类的对象调用
- B. 静态数据成员可以在类体内进行初始化
- C. 静态数据成员不能受protected控制符的作用
- D.
静态数据成员可以直接用类名调用
正确答案: D
3. (单选题)定义静态成员函数的主要目的是( )
- A. 方便调用
- B. 有利于数据隐藏
- C. 处理类的静态成员变量
- D. 便于继承
正确答案: C
二. 填空题(共5题,62.5分)
4. (填空题)
如果想将类的一般成员函数说明为类的常成员函数,则应该使用关键字___________说明成员函数。
正确答案: const
5. (填空题)
被声明为const的数据成员只允许声明为___________的成员函数访问。
正确答案:const
6. (填空题)
将类中的数据成员声明为static的目的是使同类的( )对数据实现共享。
正确答案:对象
答案解析:
7. (填空题)
类的静态数据成员的初始化工作要放在( )对象。备注:答案只能写两个字
正确答案:类外
8. (填空题)
有如下类定义及类应用,试问,该程序输出为____
class CStudent
{
int sno;
public:
static int stuCount;
CStudent(int sno):sno(sno) { stuCount++;}
~CStudent(){}
};
int CStudent::stuCount=0;
int main()
{
CStudent stu1(1);
CStudent *pstu=new CStudent(2);
cout<<stu1.stuCount;
}
正确答案: 2
题解:静态成员所有对象共享