"semantics" 是什么意思?为什么 "move semantics" 如此命名,而不是任何其他术语?

What does "semantics" mean? and why are "move semantics" named as such, instead of any other term?

在cpp中,对象的“移动语义”指的是“将对象移动而不是复制到更新的对象”的概念,但是“语义”这个词真的让我很困惑。

“语义”和“功能”有什么区别? 如何正确使用这个词? 如果我实现了一个名为“max(A,B)”的方法,我们可以说“我实现了最大语义”吗? 如果我编写一个名为“列表”的对象,我们可以说“我实现了一个序列存储语义”吗?

“语义”是意思或书面说明的解释。它通常与描述指令的形式的“语法”相对照。例如,赋值 foo = bar 在许多编程语言中具有相同的形式,但不一定具有相同的含义。在 C++ 中表示复制,在 Rust 中表示移动,在 Java 或 Python 中表示复制对象引用。

应用于 C++ 语法(例如向函数赋值或传递参数)的“移动语义”意味着该语法是或可以被解释为对象移动而不是对象复制。语义不是“功能”的同义词,因此“max 语义”没有多大意义。

可以应用该词的其他示例是 reference semantics 而不是值语义,或者是“短路语义”(&&|| 运算符)评估所有条款。基本上,任何你写的东西有多种可能的含义,你需要说出并指出正确的一个。