0

你能为我解释一下这些术语吗:引用语义和值语义(以及它们如何对比)和非线性可变状态。在此链接http://lambda-the-ultimate.org/node/2849的书评评论中提到了它们

这本书当然是《Programming: Principles and Practice Using C++》,许多评论者称这本书无用,因为忽略了引用语义,我几乎可以猜到这是什么意思,但我不是 100% 肯定。

我认为他们的意思是使用引用类型(例如类)进行编程与使用值类型(例如结构)进行编程相比

我怀疑我的理解,因为我怀疑 bjarne stroustup 会这样做,C++ 是关于类的......所以我认为术语引用语义有一些更深层次的东西,至少对我来说不太明显

还使用了术语线性和非线性状态,这看起来很有趣,但我不明白。

因此,如果有人可以解释这些术语,那就太好了

4

1 回答 1

2

不要过多地阅读这些评论。他们不是那么有启发性。

基本上,“引用语义”意味着您正在使用int*,而值语义意味着您正在使用int. “Achillas Margaritis”抱怨书中使用的vector<int>,他认为实际上你通常有vector<int*>。(我显然不同意)。

“非线性可变状态”似乎就是我所说的非正交状态。例如,您可以设置Foo.x为 7 和Foo.y8,除非Foo.z是 9。特别是,这似乎意味着允许的突变集非常依赖于先前的操作。如果你是在管理char[]自己,那是真的,但std::string行为的变异者非常合理。

于 2012-07-23T13:56:13.060 回答