C 之值語義與物件語義

2021-07-16 00:09:19 字數 571 閱讀 7456

●iostream擴充套件

#include // 是不是太重量級了?

class date

void writeto(std::ostream& os) const

private:

int year_, month_, day_;

};std::ostream& operator<<(std::ostream& os, const date& date)

int main()

●adt 與 oo(值語義與物件語義)

值語義:complex<> 、pair<>、vector<>、 string,拷貝之後就與原物件無關(int拷貝乙份)

物件語義:iostream(fstream代表控制代碼,不能拷貝乙份no-copyabe)

我們常見的**類都是物件語義的

1.禁用拷貝和賦值操作

c++ 裡做物件導向程式設計,寫的 class 通常應該禁用 copy constructor 和 assignment operator

2.物件語意的型別不能直接作為標準容器庫的成員。

3.c語言用整數或指標代表控制代碼,很容易出現異常。

值語義與物件語義

值語義 value sematics 指的是物件的拷貝與原物件無關,就像拷貝int一樣。c 的內建型別 bool int double char 都是值語義,標準庫里的complex pair vector map string等等型別也都是值語義,拷貝之後就與原物件脫離關係。物件語義 object...

C 類設計思考(二) 值語義與引用語義

類設計前首先需要確定的是,該類所例項化的物件是值語義還是引用語義。值語義 一般用於非獨占性資源物件,表示該物件可以像int 一樣的工作,可以任意的拷貝和重新賦值,而不會引起資源洩漏或者切割 指部分資源釋放而部分洩漏 引用語義一般用於獨占性資源封裝 物件,表示該物件不允許拷貝和重新賦值。從語法的角度上...

go 型別的值語義和引用語義

go語言重大部分型別都是基於值語義,包括 1.基本型別 byte,int,bool,float32,float64,string等 2.復合型別 陣列array,結構體struct,指標pointer等 重點來了,c c 中,陣列傳遞是引用語義,但在go中,陣列和基本型別沒啥區別,都是值語義,也就是...