From ba51efaa1905e53f41007388ac4668dc147d6bc2 Mon Sep 17 00:00:00 2001 From: YdrMaster Date: Sun, 28 Jul 2024 12:07:21 +0800 Subject: [PATCH] update Signed-off-by: YdrMaster --- exercises/12_class_destruct/main.cpp | 1 + exercises/13_class_clone/main.cpp | 4 +++- exercises/14_class_move/main.cpp | 15 +++++++++++++-- exercises/15_class_derive/main.cpp | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/exercises/12_class_destruct/main.cpp b/exercises/12_class_destruct/main.cpp index 9e47576b..42150e8c 100644 --- a/exercises/12_class_destruct/main.cpp +++ b/exercises/12_class_destruct/main.cpp @@ -1,6 +1,7 @@ #include "../exercise.h" // READ: 析构函数 +// READ: RAII /// @brief 任意缓存容量的斐波那契类型。 /// @details 可以在构造时传入缓存容量,因此需要动态分配缓存空间。 diff --git a/exercises/13_class_clone/main.cpp b/exercises/13_class_clone/main.cpp index 49222ba9..f74b7039 100644 --- a/exercises/13_class_clone/main.cpp +++ b/exercises/13_class_clone/main.cpp @@ -1,6 +1,8 @@ #include "../exercise.h" // READ: 复制构造函数 +// READ: 函数定义(显式弃置) + class DynFibonacci { size_t *cache; @@ -11,7 +13,7 @@ class DynFibonacci { DynFibonacci(int capacity): cache(new ?), cached(?) {} // TODO: 实现复制构造器 - DynFibonacci(DynFibonacci const &other) = delete; + DynFibonacci(DynFibonacci const &) = delete; // TODO: 实现析构器,释放缓存空间 ~DynFibonacci(); diff --git a/exercises/14_class_move/main.cpp b/exercises/14_class_move/main.cpp index 2257252f..8d2c421d 100644 --- a/exercises/14_class_move/main.cpp +++ b/exercises/14_class_move/main.cpp @@ -1,5 +1,10 @@ #include "../exercise.h" +// READ: 左值右值(概念) +// READ: 左值右值(细节) +// READ: 关于移动语义 +// READ: 如果实现移动构造 + // READ: 移动构造函数 // READ: 移动赋值 // READ: 运算符重载 @@ -13,11 +18,11 @@ class DynFibonacci { DynFibonacci(int capacity): cache(new ?), cached(?) {} // TODO: 实现移动构造器 - DynFibonacci(DynFibonacci &&other) noexcept = delete; + DynFibonacci(DynFibonacci &&) noexcept = delete; // TODO: 实现移动赋值 // NOTICE: ⚠ 注意移动到自身问题 ⚠ - DynFibonacci &operator=(DynFibonacci &&other) noexcept = delete; + DynFibonacci &operator=(DynFibonacci &&) noexcept = delete; // TODO: 实现析构器,释放缓存空间 ~DynFibonacci(); @@ -30,6 +35,12 @@ class DynFibonacci { return cache[i]; } + // NOTICE: 不要修改这个方法 + size_t operator[](int i) const { + ASSERT(i <= cached, "i out of range"); + return cache[i]; + } + // NOTICE: 不要修改这个方法 bool is_alive() const { return cache; diff --git a/exercises/15_class_derive/main.cpp b/exercises/15_class_derive/main.cpp index 284c4167..5e6c8d73 100644 --- a/exercises/15_class_derive/main.cpp +++ b/exercises/15_class_derive/main.cpp @@ -59,7 +59,7 @@ int main(int argc, char **argv) { // 这是不可能的,A 无法提供 B 增加的成员变量的值 // B ba = A(4); - // 这也是不可能的,因为 A 是 B 的一部分,就好像不可以把套娃🪆的外层放进内层里。 + // 这也是不可能的,因为 A 是 B 的一部分,就好像不可以把套娃的外层放进内层里。 A ab = B(5);// 然而这个代码可以编译和运行! // THINK: 观察打印出的信息,推测把大象放进冰箱分几步? // THINK: 这样的代码是“安全”的吗?