第 20 课2026.09.28
把上一课得到的目标课程放入课程列表,不再依赖该目标对象的原标题。
第 20 课:移动课程对象进入列表
- 日期:2026-09-28
- 课程序号:第 20 课
- 知识点:
vector::push_back接收右值
用途或适用场景
把上一课得到的目标课程放入课程列表,不再依赖该目标对象的原标题。
核心概念
push_back(std::move(moved)) 选择接收右值的重载;插入后使用列表中的对象,不断言被移动对象的字符串内容。需 C++11 或更新标准。
最小代码或操作示例
cpp
#include <iostream>
#include <string>
#include <utility>
#include <vector>
struct Lesson { std::string title; int minutes; };
int main() {
Lesson source{"C++", 5};
Lesson copied = source;
Lesson moved = std::move(source);
std::vector<Lesson> lessons;
lessons.push_back(std::move(moved));
std::cout << copied.title << " " << lessons[0].title << '\n'; // C++ C++
}3~5 分钟练习
把 minutes 改为 10,输出列表第一项的时长。
参考答案
把初始对象改为 Lesson source{"C++", 10};,再输出 lessons[0].minutes,结果是 10;不要检查移动后的 moved.title。
与上一课的联系
沿用第 19 课的 Lesson、source、copied、moved;本课只新增把 moved 移入 vector;下一课可遍历列表显示所有课程。
时效校验
时效校验:2026-09-28(已检索并打开 Standard C++ 官方 C++11 容器说明与默认移动语义说明;push_back 右值重载需 C++11+,未见废弃标记)。