第 18 课2026.09.23
把已有课程对象中的字符串成员转交给另一个课程对象。
第 18 课:移动含字符串成员的 Lesson
- 日期:2026-09-23
- 课程序号:第 18 课
- 知识点:类成员的移动语义
用途或适用场景
把已有课程对象中的字符串成员转交给另一个课程对象。
核心概念
简单的 Lesson 结构体含有 std::string 成员且没有自定义拷贝、移动或析构函数时,编译器可以生成逐成员移动操作;移动后不依赖源对象字符串的具体内容。
最小代码或操作示例
cpp
#include <iostream>
#include <string>
#include <utility>
struct Lesson { std::string title; int minutes; };
int main() {
Lesson source{"C++", 5};
Lesson destination{"草稿", 1};
destination = std::move(source);
std::cout << destination.title << " " << destination.minutes << "\n";
}3~5 分钟练习
把源课程时长改为 10,再执行移动赋值。
参考答案
目标对象输出 C++ 10;不要断言移动后 source.title 的具体文本。
与上一课的联系
沿用第 17 课的 Lesson、source 和 destination;上一课只移动 title,本课只改为移动整个对象,观察目标的 minutes 也随之变为 5;下一课可比较拷贝与移动后两个目标对象的值。
时效校验
时效校验:2026-09-24(已重新打开 Standard C++ 的默认拷贝与移动操作说明;移动语义需 C++11+,简单结构体的逐成员移动用法未见废弃说明)。