C++ 中的值语义技巧

Posted

技术标签:

【中文标题】C++ 中的值语义技巧【英文标题】:value semantic tricks in C++ 【发布时间】:2011-12-08 06:11:15 【问题描述】:

除了 C++(因为他有运算符重载),你知道另一种 OOP 语言可以做(或在最坏的情况下模仿)“值语义”吗?

【问题讨论】:

【参考方案1】:

在 C# 中,如果您将“对象”定义为 struct,则它具有值语义。如果您将其定义为class,则它具有引用语义(除非您将其设为不可变,如string,则其语义更类似于值一)。

我要补充一点,打破这种“隐含”语义很容易。

struct MyStruct

    public StringBuilder SB;


MyStruct a = new MyStruct();
a.SB = new StringBuilder();

MyStruct b = a;

现在你已经破坏了语义,因为 ab “指向”同一个引用。

【讨论】:

这根本没有破坏价值语义。事实上,这正是价值语义所说的应该发生的事情。【参考方案2】:

D 中的结构也具有值语义。

【讨论】:

以上是关于C++ 中的值语义技巧的主要内容,如果未能解决你的问题,请参考以下文章

[C++基础] 函数技巧 - 计时函数

CSS进阶:提高你前端水平的 4 个技巧

python 小技巧, 如何根据字典中的值的大小,对字典中的项排序

ue4 c++ 模板中的一个小技巧

ue4 c++ 模板中的一个小技巧

Visual C++编程技巧之六