2024年春《高级程序设计》期末考试题回忆

笔者第一次考试破防,故记录题目如下,希冀后人能够免除高程的烦恼

概念解释(20pt)

  • 数据抽象与封装和过程抽象与封装的区别是什么?
  • C++中代码复用的例子?
  • 虚函数是什么?有什么作用?有什么缺点?
  • C++中创建对象的方式有哪些?他们有什么区别?

改错和读程序写结果

具体程序难以回忆,关注点:

  • private/protected的访问控制
  • 常量对象只能调用常成员函数
  • “=”赋值号中对额外内存空间的消除/新建
  • 结构化异常处理,匹配规则
  • delete[] 和 delete
  • 引用和指针的多态
    ...

补全程序

  • Allocator (内存池) 使用泛型
// 核心代码
template<class T, size_t BLOCK_SIZE>
class Allocator{
public:
    T* allocate();
    void deallocate(void* ptr);
    ~Allocator(); 
private:    
    struct UnusedSpace{
        T place_holder;
        UnusedSpace* next;
    }free_ptr;
}

考察:给出allocate,补全deallocate和析构函数,要求能够释放内存时释放所有空间,deallocate时能够释放当前内存到内存池中

  • sortedList 有序数列: 先实现了一个抽象类,然后用链表具体实现了各个方法,要求实现:
    • 链表的深拷贝
    • 链表的释放空间
    • 有序数列的插入(仅要求实现链表的插入节点)
    • 有序数列的随机存取
    • 有序数列的lower_bound(仅要求实现while循环条件)
    • 有序数列的删除(仅要求实现链表删除节点)

版权声明:
作者:carott
链接:https://blog.hellholestudios.top/archives/1417
来源:Hell Hole Studios Blog
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录