Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的值语义技巧+; 除了C++(因为他有操作符超载),你知道另一个OOP语言,它可以在C语言中做(或模仿最坏的情况)“值语义”?< P>,如果你定义了你的“对象”为结构> /COD>它有价值语义。如果将其定义为类,则它具有引用语义(除非将其设置为不可变,如字符串,否则其语义更类似于值)_C++_Oop_Programming Languages_Semantics - Fatal编程技术网

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中的结构也有值语义。

根本没有破坏值语义。事实上,这正是价值语义学所说的应该发生的事情。