值語義與物件語義

2021-07-04 06:21:12 字數 513 閱讀 2008

值語義:(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中,陣列和基本型別沒啥區別,都是值語義,也就是...