"freeborders福瑞博德2009年笔试题,包含C++程序设计相关题目"
本文将详细解析2009年freeborders福瑞博德笔试中的几个C++编程题目,帮助理解C++语言的关键概念。
1. **异常处理**
题目描述了一个C++异常处理的场景:
```cpp
int main() {
try {
throw "Error";
cerr << "AfterError" << endl;
}
catch (const char* msg) {
cerr << msg << endl;
throw;
}
catch (...) {
cerr << "AnotherError" << endl;
}
return 0;
}
```
当这个程序执行时,会首先抛出一个`"Error"`的字符串异常。在第一个`catch`块中捕获到这个异常后,它打印出`Error`,然后再次抛出异常。由于没有其他的特定异常处理块能捕获这个已经被重新抛出的异常,它会落入到`catch(...)`的块中,打印出`AnotherError`。然后,程序根据C++标准的行为,由于异常未被处理,会终止运行,而不是正常退出。因此,正确答案是:
- Error is printed, then AnotherError is printed, then the program aborts.
2. **动态内存分配与数组**
题目询问哪种方式可以分配一个含有10个`Point`指针的数组:
```cpp
struct Point {
int x, y;
Point(int xx=0, int yy=0):x(xx),y(yy){};
};
```
为了创建一个`Point`对象的指针数组,你需要使用`new`运算符动态分配内存。正确的分配方式是:
```cpp
Point* pts = new Point*[10];
```
这行代码创建了一个指向`Point`对象的指针数组,数组的大小为10。
3. **抽象类**
抽象类是C++中一个重要的概念,它定义了:
- 至少有一个纯虚函数(`virtual`函数无实现)。
- 可以声明为`abstract`类(使用`=0`),但不是必须的,有纯虚函数的类自动被视为抽象类。
因此,正确答案是:
- has at least one virtual function
4. **题目不完整**
题目四的信息不完整,无法提供解答。通常,抽象类是不能被实例化的,它们用来作为基类,定义接口供派生类实现。
总结,这些题目涵盖了C++的异常处理、动态内存分配以及抽象类等核心概念,对于准备freeborders福瑞博德笔试或者其他C++编程面试的考生来说,理解并掌握这些知识点至关重要。