C+中的值语义技巧+; 除了C++(因为他有操作符超载),你知道另一个OOP语言,它可以在C语言中做(或模仿最坏的情况)“值语义”?< P>,如果你定义了你的“对象”为结构> /COD>它有价值语义。如果将其定义为类,则它具有引用语义(除非将其设置为不可变,如字符串,否则其语义更类似于值)
我要补充一点,打破这种“隐式”语义是很容易的C+中的值语义技巧+; 除了C++(因为他有操作符超载),你知道另一个OOP语言,它可以在C语言中做(或模仿最坏的情况)“值语义”?< P>,如果你定义了你的“对象”为结构> /COD>它有价值语义。如果将其定义为类,则它具有引用语义(除非将其设置为不可变,如字符串,否则其语义更类似于值),c++,oop,programming-languages,semantics,C++,Oop,Programming Languages,Semantics,我要补充一点,打破这种“隐式”语义是很容易的 struct MyStruct { public StringBuilder SB; } MyStruct a = new MyStruct(); a.SB = new StringBuilder(); MyStruct b = a; 现在您已经破坏了语义,因为a和b都指向同一个引用。D中的结构也有值语义。根本没有破坏值语义。事实上,这正是价值语义学所说的应该发生的事情。
struct MyStruct
{
public StringBuilder SB;
}
MyStruct a = new MyStruct();
a.SB = new StringBuilder();
MyStruct b = a;
现在您已经破坏了语义,因为
a
和b
都指向同一个引用。D中的结构也有值语义。根本没有破坏值语义。事实上,这正是价值语义学所说的应该发生的事情。