在Cpp中,对象的“移动语义”指的是“移动但不将对象复制到较新的对象”的概念,但“语义”这个词确实让我很困惑。
“语义”和“功能”有什么区别? 如何正确使用这个词? 如果我实现了一个名为“max(A,B)”的方法,我们可以说“我实现了最大语义”吗? 如果我编码一个名为“列表”的对象,我们可以说“我实现了序列存储语义”吗?
“语义”是书面指令的含义或解释。它通常与“语法”形成对比,“语法”描述了指令的“形式”。例如,赋值 foo = bar
在许多编程语言中具有相同的形式,但不一定具有相同的含义。在 C++ 中,它可能意味着复制,在 Rust 中,它可能意味着移动,在 Java 或 Python 中,它意味着复制对象引用。
max
语义”没有多大意义。
可以应用该词的其他示例是引用语义,而不是值语义,或者“短路语义”(&&
和
||
运算符)而不是急于求值。基本上,任何您所写内容有多种可能含义的内容,您需要命名并指出正确的含义。