c++中的值语义技巧

value semantic tricks in C++

本文关键字:语义 c++      更新时间:2023-10-16

除了c++(因为他有操作符重载),你知道另一种OOP语言可以做(或者在最坏的情况下模拟)吗?"值语义" ?

在c#中,如果你将"对象"定义为struct,它具有值语义。如果您将其定义为class,则它具有引用语义(除非您使其不可变,如string,否则其语义更类似于值1)。

我要补充一点,打破这种"隐式"语义是很容易的。

struct MyStruct
{
    public StringBuilder SB;
}
MyStruct a = new MyStruct();
a.SB = new StringBuilder();
MyStruct b = a;

现在你已经打破了语义,因为ab都"指向"同一个引用。

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