闭卷解释自动、动态与静态存储期的编译阶段、对象状态、规则和失败边界。
C++程序设计 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷解释new/delete为什么难的编译阶段、对象状态、规则和失败边界。
闭卷解释析构与RAII的编译阶段、对象状态、规则和失败边界。
闭卷解释拷贝构造和拷贝赋值的编译阶段、对象状态、规则和失败边界。
闭卷解释移动语义与右值引用的编译阶段、对象状态、规则和失败边界。
闭卷解释智能指针与所有权图的编译阶段、对象状态、规则和失败边界。
闭卷解释资源安全实验的编译阶段、对象状态、规则和失败边界。
规则:allocation≠ownership;任务:写一个能编译运行的最小程序展示“new/delete为什么难”,记录输入、关键对象状态、输出和编译命令,并用规则 allocation≠ownership 解释结果;边界:不得把“new/delete为什么难”只写成语法模板;必须说明类型、所有权/生存期、失败输入、复杂度或并发可见性中与本节有关的边界
规则:storage duration bounds lifetime;任务:写一个能编译运行的最小程序展示“自动、动态与静态存储期”,记录输入、关键对象状态、输出和编译命令,并用规则 storage duration bounds lifetime 解释结果;边界:不得把“自动、动态与静态存储期”只写成语法模板;必须说明类型、所有权/生存期、失败输入、复杂度或并发可见性中与本节有关的边界
规则:copy duplicates declared value semantics;任务:写一个能编译运行的最小程序展示“拷贝构造和拷贝赋值”,记录输入、关键对象状态、输出和编译命令,并用规则 copy duplicates declared value semantics 解释结果;边界:不得把“拷贝构造和拷贝赋值”只写成语法模板;必须说明类型、所有权/生存期、失败输入、复杂度或并发可见性中与本节有关的边界
规则:acquire in constructor; release in destructor;任务:写一个能编译运行的最小程序展示“析构与RAII”,记录输入、关键对象状态、输出和编译命令,并用规则 acquire in constructor; release in destructor 解释结果;边界:不得把“析构与RAII”只写成语法模板;必须说明类型、所有权/生存期、失败输入、复杂度或并发可见性中与本节有关的边界
规则:unique/shared/weak model ownership;任务:写一个能编译运行的最小程序展示“智能指针与所有权图”,记录输入、关键对象状态、输出和编译命令,并用规则 unique/shared/weak model ownership 解释结果;边界:不得把“智能指针与所有权图”只写成语法模板;必须说明类型、所有权/生存期、失败输入、复杂度或并发可见性中与本节有关的边界
规则:move transfers valid resources;任务:写一个能编译运行的最小程序展示“移动语义与右值引用”,记录输入、关键对象状态、输出和编译命令,并用规则 move transfers valid resources 解释结果;边界:不得把“移动语义与右值引用”只写成语法模板;必须说明类型、所有权/生存期、失败输入、复杂度或并发可见性中与本节有关的边界
规则:every acquired resource has one release path;任务:写一个能编译运行的最小程序展示“资源安全实验”,记录输入、关键对象状态、输出和编译命令,并用规则 every acquired resource has one release path 解释结果;边界:不得把“资源安全实验”只写成语法模板;必须说明类型、所有权/生存期、失败输入、复杂度或并发可见性中与本节有关的边界