#define language 437
#if language < 400
#undef language
#else
#define language 850
#ifdef language
#endif
#endif
A. An error or warning will occur on Line 6 because a macro cannot be used as
part of a preprocessor directive.
B. An error or warning will occur on Line 2 because #undef is not a valid preprocessor directive.
C. An error or warning will occur on Line 4 because language has already been defined.
D. If Line 1 is changed to #define language 300, Line 6 will print "850".
E. An error or warning will occur on Line 3 because #else can only be used as the last conditional in the chain.
A. A preprocessor macro expansion cannot work when user-defined types are passed to it as arguments.
B. Since the preprocessor does the macro expansion and not the compiler, the build process takes a longer period of time.
C. While expanding #define macros, the preprocessor does no type checking on the arguments to the macro.
D. A preprocessor macro expansion incurs a performance overhead at runtime.
E. It is simple to step into a template function code during the debugging process.
C
B. map
C. stack
D. queue
E. deque
顺序性容器 | |
vector | 从后面快速的插入与删除,直接访问任何元素 |
deque | 从前面或后面快速的插入与删除,直接访问任何元素 |
list | 双链表,从任何地方快速插入与删除 |
关联容器 | |
set | 快速查找,不允许重复值 |
multiset | 快速查找,允许重复值 |
map | 一对多映射,基于关键字快速查找,不允许重复值 |
multimap | 一对多映射,基于关键字快速查找,允许重复值 |
容器适配器 | |
stack | 后进先出 |
queue | 先进先出 |
priority_queue | 最高优先级元素总是第一个出列 |
C D
A. The getline() function by default, accepts whitespace, and returns on seeing the /n character, whereas the extraction operator returns when it encounters any whitespace character.
A B D
C D E
A. It throws a bad_alloc exception.
B. It returns null.
C. It returns silently with no effect on the expression.
D. It throws an insufficient_memory exception.
E. It logs an error message to the mem_err.log file
A
template<typename T>
class MyArray
{
};
C
A. Write the terminate() function with two int arguments.
B. Write the terminate() function with a runtime_error argument.
C. Pass the address of the overriding function to the set_terminate() function.
D. Write the terminate() function with one int argument.
E. Write the terminate() function with a runtime_exception argument.
C
E
A
BC
获得和设置流指针(get and put stream pointers)
所有输入/输出流对象(i/o streams objects)都有至少一个流指针:
- ifstream, 类似istream, 有一个被称为get pointer的指针,指向下一个将被读取的元素。
- ofstream, 类似 ostream, 有一个指针 put pointer ,指向写入下一个元素的位置。
- fstream, 类似 iostream, 同时继承了get 和 put
我们可以通过使用以下成员函数来读出或配置这些指向流中读写位置的流指针:
- tellg() 和 tellp()
这两个成员函数不用传入参数,返回pos_type 类型的值(根据ANSI-C++ 标准) ,就是一个整数,代表当前get 流指针的位置 (用tellg) 或 put 流指针的位置(用tellp).
- seekg() 和seekp()
这对函数分别用来改变流指针get 和put的位置。两个函数都被重载为两种不同的原型:
seekg ( pos_type position );
seekp ( pos_type position );使用这个原型,流指针被改变为指向从文件开始计算的一个绝对位置。要求传入的参数类型与函数 tellg 和tellp 的返回值类型相同。
seekg ( off_type offset, seekdir direction );
seekp ( off_type offset, seekdir direction );使用这个原型可以指定由参数direction决定的一个具体的指针开始计算的一个位移(offset)。它可以是:
ios::beg 从流开始位置计算的位移 ios::cur 从流指针当前位置开始计算的位移 ios::end 从流末尾处开始计算的位移
流指针 get 和 put 的值对文本文件(text file)和二进制文件(binary file)的计算方法都是不同的,因为文本模式的文件中某些特殊字符可能被修改。由于这个原因,建议对以文本文件模式打开的文件总是使用seekg 和 seekp的第一种原型,而且不要对tellg 或 tellp 的返回值进行修改。对二进制文件,你可以任意使用这些函数,应该不会有任何意外的行为产生。
template <class T> class Derived;
that has to inherit from another template class
template <class T> class Base;?
C
1. 模版类申明和定义要写在一起
2. template <class T>
- class Base
- {
- public:
- Base(){cout << "In Base Ctor/n";
- }
- class Nest
- {
- public:
- Nest(){cout << "In Nest Ctor/n"; }
- };
- };
- class Derive : public Base
- {
- public:
- Derive(){cout << "In Derive Ctor/n"; }
- };
- void main()
- {
- Derive obj;
- }
A. Base constructor
Derive constructor
B. Base constructor
Derive constructor
Nest constructor
C. Base constructor
Nest constructor
Derive constructor
D. Nest constructor
Base constructor
Derive constructor
E. Derive constructor
Base constructor
Nest constructor
A
嵌套类是独立的类,基本上与它们的外围类不相关,因此,外围类和嵌套类的对象是互相独立的。嵌套类型的对象不具备外围类所定义的成员,同样,外围类的成员也不具备嵌套类所定义的成员。
嵌套类的名字在其外围类的作用域中可见,但在其他类作用域或定义外围类的作用域中不可见。嵌套类的名字将不会与另一作用域中声明的名字冲突。
嵌套类可以具有与非嵌套类相同种类的成员。像任何其他类一样,嵌套类使用访问标号控制对自己成员的访问。成员可以声明为 public、 private 或 protected。外围类对嵌套类的成员没有特殊访问权,并且嵌套类对其外围类的成员也没有特殊访问权。
嵌套类定义了其外围类中的一个类型成员。像任何其他成员一样,外围类决定对这个类型的访问。在外围类的public 部分定义的嵌套类定义了可在任何地方使用的类型,在外围类的 protected 部分定义的嵌套类定义了只能由外围类、友元或派生类访问的类型,在外围类的 private 部分定义的嵌套类定义了只能被外围类或其友元访问的类型。
A. Every object of the class holds the address of a structure holding the addresses of the 5 virtual functions.
选D
A D
A
A. ~Y()
B. ~X()
C. ~Y()
D. ~A()
E. ~X()
C
构造函数调用次序:基类构造函数(按申明顺序)
析构函数调用次序:与基类完全相反
public:
};
D
2种会导致隐式类型转换的方法
B
B
B
C
Which of the following statements can be used to allocate memory for the first dimension in order to make p an array of 3 arrays of 5 pointers to type int?
D
Which of the following methods can the developer use to carry out this specialization?
B
"must not have known what you'd do."
#define MESSAGE = MESSAGE + " plenty of time to read it."
program will terminate."
#concat MESSAGE & #UserName
D
B
B
B C
A C D
B E
B D
10. B
11. A E
14.C
17. 输出为:
TestPrint
const TestPrint
volatile TestPrint
const volatile TestPrint
6. B D
11. B
12. A B D
14. C
19. C
23. D
24. A E
28. A B
30. B
31. A C
35. B
37. D
40. B
13. B D
36. A
58. C
10. B
25. D E
42. A C
54. BDE