“语义”是什么意思?为什么“移动语义”如此命名,而不是任何其他术语?

Jia*_*jie 8 c++ semantics

在Cpp中,对象的“移动语义”指的是“移动但不将对象复制到较新的对象”的概念,但“语义”这个词确实让我感到困惑。

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

use*_*342 16

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

应用于 C++ 构造(例如赋值或参数传递)的“移动语义”是指这些构造的语法被解释为对象移动而不是对象复制的情况。语义不是“功能”的同义词,因此“max语义”没有多大意义。

可以应用该词的其他示例是与值语义相反的引用语义,或者与急切求值相反的“短路语义”(&&and运算符的)。||基本上,任何你所写的内容都有多种可能含义的内容,你需要命名并指出正确的含义。