C++ 有人能解释一下这些编程术语吗:引用语义、非线性可变状态?

C++ 有人能解释一下这些编程术语吗:引用语义、非线性可变状态?,c++,reference,functional-programming,state,mutable,C++,Reference,Functional Programming,State,Mutable,你能给我解释一下这些术语吗:引用语义和值语义(以及它们之间的对比)和非线性可变状态。他们在本链接的书评评论中提到 这本书当然是《编程:使用C++的原则和实践》。许多评论员认为这本书对教学毫无用处,因为它忽略了引用语义,我几乎可以猜出这意味着什么,但我不是100%确定 我认为他们的意思是,使用引用类型(例如类)编程与使用值类型(例如struct)编程相比,是一种可行的方法 我怀疑我的理解力,因为我怀疑Bjar NeSouthUp会这么做,C++是关于课堂的…因此,我认为术语引用语义学有更深层次的

你能给我解释一下这些术语吗:引用语义和值语义(以及它们之间的对比)和非线性可变状态。他们在本链接的书评评论中提到

这本书当然是《编程:使用C++的原则和实践》。许多评论员认为这本书对教学毫无用处,因为它忽略了引用语义,我几乎可以猜出这意味着什么,但我不是100%确定

我认为他们的意思是,使用引用类型(例如类)编程与使用值类型(例如struct)编程相比,是一种可行的方法

我怀疑我的理解力,因为我怀疑Bjar NeSouthUp会这么做,C++是关于课堂的…因此,我认为术语引用语义学有更深层次的东西,至少对我来说不太明显

还使用了线性和非线性状态这两个术语,这似乎很有趣,但我不理解


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

不要对这些评论读得太多。他们没那么有启发性

基本上,“引用语义”意味着您正在使用
int*
,而值语义意味着您正在使用
int
。“Achilleas Margaritis”抱怨说这本书使用了
向量
,他认为在现实中你通常有
向量
。(我显然不同意)


“非线性可变状态”似乎就是我所说的非正交状态。例如,您可以将
Foo.x
设置为7,将
Foo.y
设置为8,除非
Foo.z
为9。特别是,这似乎意味着允许的突变集非常依赖于以前的操作。如果你管理的是代码> char []/Cuth>,那是正确的,但是代码< > STD::String 的行为非常合理。C++中,类和结构基本上是相同的。它们的区别当然与参考和价值语义学无关。你注意到“这本书毫无价值”是在这本书出版前6个月写的吗?他们怎么知道的?