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