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

问题描述 投票:0回答:1

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

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

c++ semantics
1个回答
15
投票

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

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

max

语义”没有多大意义。

可以应用该词的其他示例是

引用语义

,而不是值语义,或者“短路语义”(&&

||
运算符)而不是急于求值。基本上,任何您所写内容有多种可能含义的内容,您需要命名并指出正确的含义。
    

© www.soinside.com 2019 - 2024. All rights reserved.