值語義:(value sematics)指的是物件的拷貝與原物件無關,就像拷貝int一樣。c++的內建型別(bool/int/double/char)都是值語義,
標準庫里的complex<>/pair<>/vector<>/map<>/string等等型別也都是值語義,拷貝之後就與原物件脫離關係。
物件語義:(object sematics)指的是物件導向意義下的物件,物件拷貝是禁止的。例如,thread是物件語義,拷貝thread是無意義的,也是被禁止的:
因為thread代表執行緒,拷貝乙個thread物件並不能讓系統增加乙個一模一樣的執行緒。
同樣的道理,拷貝乙個employee物件是沒有意義的,乙個雇員不會變成兩個雇員,他也不會領兩份薪水。拷貝tcpconnection物件也沒有意義,系統裡邊有乙個tcp連線,
拷貝tcpconnection物件不會讓我們擁有兩個連線。printer也是不能拷貝的,系統只連線了乙個印表機,拷貝printer並不能憑空增加印表機。凡此總總,物件導向意義下的「物件」是non-copyable。
C 之值語義與物件語義
iostream擴充套件 include 是不是太重量級了?class date void writeto std ostream os const private int year month day std ostream operator std ostream os,const date d...
C 類設計思考(二) 值語義與引用語義
類設計前首先需要確定的是,該類所例項化的物件是值語義還是引用語義。值語義 一般用於非獨占性資源物件,表示該物件可以像int 一樣的工作,可以任意的拷貝和重新賦值,而不會引起資源洩漏或者切割 指部分資源釋放而部分洩漏 引用語義一般用於獨占性資源封裝 物件,表示該物件不允許拷貝和重新賦值。從語法的角度上...
go 型別的值語義和引用語義
go語言重大部分型別都是基於值語義,包括 1.基本型別 byte,int,bool,float32,float64,string等 2.復合型別 陣列array,結構體struct,指標pointer等 重點來了,c c 中,陣列傳遞是引用語義,但在go中,陣列和基本型別沒啥區別,都是值語義,也就是...