国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

Effictive C++筆記(1)

2019-11-06 06:16:17
字體:
來源:轉載
供稿:網友

導讀

命名空間std是幾乎所有C++標準程序庫元素的棲身處聲明式,告訴編譯器名稱和類型 extern int x;//對象聲明式 class Widget;//類的聲明式 template< typename T>//模板聲明式 class GraphNode;定義式,對對象而言,定義式是編譯器為此對象撥發內存的地點初始化,給予對象初值的過程

explicit

class A{public: A(); //default構造函數};class C{public: explicit C(int x); //不是default構造函數};

構造函數被聲明為explicit,這可阻止它們被用來執行隱式類型轉換,但它們仍可被用來進行顯式類型轉換:

void doSomething(C cObject);C cObj1;doSomething(cObj1); //okC cObj2(28);doSomething(28); //WRONG 該函數接受一個C,而不是int,而int和C之間沒有隱式轉換doSomething(C(28)); //OK,使用C構造函數將int顯式轉換

被聲明為explicit的構造函數通常比其non-explicit更受歡迎,因為它們禁止編譯器執行非預期的類型轉換。


copy構造函數

copy構造函數被用來“以同型對象初始化自我對象”,copy assignment操作符被用來“從另一同型對象中拷貝其值到自我對象”

class Widget{public: Widget(); //default構造函數 Widget(const Widget& rhs); //copy構造函數 Widget& Operator=(const Widget& rhs); //copy assignment操作符 ...};Widget W1; //調用default構造函數Widget W2(W1); //調用copy構造函數W1=W2; //調用copy assignment操作符Widget W3=W2; //賦值符號“=”也可用來調用copy構造函數

copy構造函數是一個尤其重要的函數,因為它定義一個對象如何passed by value(以值傳遞)

bool hasAcceptableQuality(Widget w);...Widget aWidget;if(hasAcceptableQuality(aWidget)){ ...}

參數w是以by value方式傳遞給hasAcceptableQuality,所以在上述調用中aWidget被復制到w體。這個復制動作是由Widget的copy構造函數完成。passed by value意味著調用copy構造函數。

以by value傳遞用戶自定義類型通常是bad idea,pass by reference to const往往是比較好的選擇


不明確行為 由于各種因素,某些C++構件的行為沒有定義:你無法穩定預估運行期會發生什么事。int* p=0; //p是一個null指針std::cout << *p;//對一個null指針取值會導致不明確行為接口 java和.NET語言都提供接口為語言元素,但C++沒有線程 C++和C++標準程序庫對線程無概念 線程安全性是許多程序員面對的主題TR1(Technical Report 1)是一份規范,所有TR1組件都被置于命名空間tr1內,后者嵌套于命名空間std內。Boost提供可移植、同僚復審、源碼開放的C++程序庫
上一篇:c++多線程詳解

下一篇:c++ 知識2

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 铜陵市| 北安市| 瑞丽市| 外汇| 泾阳县| 潍坊市| 高碑店市| 中宁县| 冀州市| 太康县| 瓦房店市| 吴桥县| 兴城市| 太仆寺旗| 池州市| 会昌县| 桂平市| 昌图县| 乐昌市| 慈溪市| 郁南县| 富阳市| 民丰县| 曲阜市| 德江县| 新巴尔虎左旗| 康马县| 农安县| 乌兰浩特市| 长治县| 襄垣县| 铁力市| 化州市| 龙江县| 沧州市| 炉霍县| 绥滨县| 九江县| 桐梓县| 嘉义县| 天镇县|