一、单项选择题(第1~15题)
1. 在某个完整C++工程中总有5个.h文件,3个.cpp文件。当编译这个工程时,将会编译得到多少个.obj文件?
A. 2 B. 3 C. 5 D. 8
2. 为防止头文件重复包含,以下书写正确的是
A. #define FILE_H
#ifndef FILE_H
…// 内容
#endif
B. #ifndef FILE_H
#define FILE_H
…// 内容
#endif
C. #ifndef FILE_H
#define FILE_H
#endif
…// 内容
D. #ifndef FILE_H
…// 内容
#define FILE_H
#endif
3. 有如下的代码
class CA {
public:
CA(int i = 0) {}
CA(const CA &a) {}
};
int main() {
CA a[5] = {CA(5);} // (1)
CA aa = a[0]; // (2)
aa = a[1]; // (3)
a[1] = a[0]; // (4)
return 0;
}
其中调用了拷贝构造函数的行是
A. (1) B. (2) C. (1)(2) D.(3)(4)
4. 有如下程序
class Base{}; class Mem1{}; class Mem2{};
class Mem3{}; class Mem4{};
class Dev1 : public Base {
Mem2 m2; Mem1 m1;
};
class Dev2 : public Dev1 {
Mem3 m3; Mem4 m4;
public:
Dev2() : m4(), Dev1(), m3() {}
};
int main() { Dev2 d2; return 0; }
定义d2时,各类的构造函数被依次调用并退出,退出顺序为
A. Dev2,Mem3,Mem4,Dev1,Mem2,Mem1,Base
B. Base,Mem2,Mem1,Dev1,Mem3,Mem4,Dev2
C. Dev2,Mem4,Mem3,Dev1,Mem2,Mem1,Base
D. Base,Mem1,Mem2,Dev1,Mem4,Mem3,Dev2
5. 有如下程序
#include <iostream>
using namespace std;
class Base {
public:
virtual void NameOf()
{cout << "Base::NameOf" << endl;}
void InvokingClass()
{cout << "Invoked by Base" << endl;}
};
class Derived : public Base {
public:
void NameOf()
{cout << "Derived::NameOf" << endl;}
void InvokingClass()
{cout << "Invoked by Derived" << endl;}
};
int main() {
Derived aDerived;
Derived *pDerived = &aDerived;
Base *pBase = &aDerived;
pBase->NameOf();
pBase->InvokingClass();
pDerived->NameOf();
pDerived->InvokingClass();
return 0;
}
则程序输出为
A. Base::NameOf
Invoked by Base
Derived::NameOf
Invoked by Derived
B. Derived::NameOf
Invoked by Derived
Derived::NameOf
Invoked by Derived
C. Derived::NameOf
Invoked by Base
Derived::NameOf
Invoked by Derived
D. Base::NameOf
Invoked by Derived
Derived::NameOf
Invoked by Derived
6. 多态的概念与下列哪一项相关?
A. 虚函数
B. 重载函数
C. 静态函数
D. 模板函数
7. 有如下类的定义
class MyClass {
public:
MyClass() { cout << 1; }
};
则语句MyClass a, b[2], *p[3];的输出结果是
A. 11 B. 111 C. 1111 D. 111111
8. 已知同类型的随机访问迭代器ita和itb,以下运算错误的是
A. ita ++; B. ++ itb;
C. ita – itb; D. ita + itb;
9. 对于类的const成员函数,以下描述正确的是
A. const成员函数不修改类的数据成员
B. const成员函数可修改类的数据成员
C. const成员函数只能由const对象调用
D. const成员函数不能访问类的数据成员
10. 以下程序的运行结果是什么?
#include <iostream>
using namespace std;
class Number {
static int x;
public:
Number() {x++; cout << x <<" ";}
Number(int a) { x = a; cout << x <<" ";}
Number(const Number &a)
{ x = a.x + 2; cout << x <<" ";}
};
int Number::x = 0;
int main () {
Number n1, n2(n1), n3(2);
Number n4[2] = { n1, n3 };
return 0;
}
A. 1 2 2 4 6
B. 1 3 4 6 8
C. 1 3 2 4 6
D. 1 2 3 4 5
1. 在某个完整C++工程中总有5个.h文件,3个.cpp文件。当编译这个工程时,将会编译得到多少个.obj文件?
A. 2 B. 3 C. 5 D. 8
2. 为防止头文件重复包含,以下书写正确的是
A. #define FILE_H
#ifndef FILE_H
…// 内容
#endif
B. #ifndef FILE_H
#define FILE_H
…// 内容
#endif
C. #ifndef FILE_H
#define FILE_H
#endif
…// 内容
D. #ifndef FILE_H
…// 内容
#define FILE_H
#endif
3. 有如下的代码
class CA {
public:
CA(int i = 0) {}
CA(const CA &a) {}
};
int main() {
CA a[5] = {CA(5);} // (1)
CA aa = a[0]; // (2)
aa = a[1]; // (3)
a[1] = a[0]; // (4)
return 0;
}
其中调用了拷贝构造函数的行是
A. (1) B. (2) C. (1)(2) D.(3)(4)
4. 有如下程序
class Base{}; class Mem1{}; class Mem2{};
class Mem3{}; class Mem4{};
class Dev1 : public Base {
Mem2 m2; Mem1 m1;
};
class Dev2 : public Dev1 {
Mem3 m3; Mem4 m4;
public:
Dev2() : m4(), Dev1(), m3() {}
};
int main() { Dev2 d2; return 0; }
定义d2时,各类的构造函数被依次调用并退出,退出顺序为
A. Dev2,Mem3,Mem4,Dev1,Mem2,Mem1,Base
B. Base,Mem2,Mem1,Dev1,Mem3,Mem4,Dev2
C. Dev2,Mem4,Mem3,Dev1,Mem2,Mem1,Base
D. Base,Mem1,Mem2,Dev1,Mem4,Mem3,Dev2
5. 有如下程序
#include <iostream>
using namespace std;
class Base {
public:
virtual void NameOf()
{cout << "Base::NameOf" << endl;}
void InvokingClass()
{cout << "Invoked by Base" << endl;}
};
class Derived : public Base {
public:
void NameOf()
{cout << "Derived::NameOf" << endl;}
void InvokingClass()
{cout << "Invoked by Derived" << endl;}
};
int main() {
Derived aDerived;
Derived *pDerived = &aDerived;
Base *pBase = &aDerived;
pBase->NameOf();
pBase->InvokingClass();
pDerived->NameOf();
pDerived->InvokingClass();
return 0;
}
则程序输出为
A. Base::NameOf
Invoked by Base
Derived::NameOf
Invoked by Derived
B. Derived::NameOf
Invoked by Derived
Derived::NameOf
Invoked by Derived
C. Derived::NameOf
Invoked by Base
Derived::NameOf
Invoked by Derived
D. Base::NameOf
Invoked by Derived
Derived::NameOf
Invoked by Derived
6. 多态的概念与下列哪一项相关?
A. 虚函数
B. 重载函数
C. 静态函数
D. 模板函数
7. 有如下类的定义
class MyClass {
public:
MyClass() { cout << 1; }
};
则语句MyClass a, b[2], *p[3];的输出结果是
A. 11 B. 111 C. 1111 D. 111111
8. 已知同类型的随机访问迭代器ita和itb,以下运算错误的是
A. ita ++; B. ++ itb;
C. ita – itb; D. ita + itb;
9. 对于类的const成员函数,以下描述正确的是
A. const成员函数不修改类的数据成员
B. const成员函数可修改类的数据成员
C. const成员函数只能由const对象调用
D. const成员函数不能访问类的数据成员
10. 以下程序的运行结果是什么?
#include <iostream>
using namespace std;
class Number {
static int x;
public:
Number() {x++; cout << x <<" ";}
Number(int a) { x = a; cout << x <<" ";}
Number(const Number &a)
{ x = a.x + 2; cout << x <<" ";}
};
int Number::x = 0;
int main () {
Number n1, n2(n1), n3(2);
Number n4[2] = { n1, n3 };
return 0;
}
A. 1 2 2 4 6
B. 1 3 4 6 8
C. 1 3 2 4 6
D. 1 2 3 4 5