在C ++中重视语义技巧

时间:2011-10-15 07:50:18

标签: c++ oop programming-languages semantics

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

2 个答案:

答案 0 :(得分:4)

在C#中,如果将“对象”定义为struct,则它具有值语义。如果你将它定义为class它具有引用语义(除非你使它成为不可变的,如string,那么它的语义更类似于值1)。

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

struct MyStruct
{
    public StringBuilder SB;
}

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

MyStruct b = a;

现在你已经打破了语义,因为ab“都指向”相同的引用。

答案 1 :(得分:0)

D中的

结构也具有值语义。