C++0x新特性筆記
阿新 • • 發佈:2019-01-29
控制函式:
若要禁用建構函式則可在建構函式後用delete修飾
例:A() = delete;
delete不但可以修飾建構函式,而且可以修飾其它任意函式,包括運算子的過載。
可以用default函式顯示式的設定預設建構函式、過載函式等
Lambda表示式:
實現了部分的閉包特性
格式為[capture](parameters)->return-type {body}
其中[capture] 分為兩種方式捕獲,一種是值傳遞,一種是引用傳遞,值傳遞將拷貝一份被捕獲的變數,在表示式內,值的改變並不影響被引用的值。引用則不拷貝,值的改變會影響引用的值。多個引用的值用逗號隔開,用=字首修飾是值傳遞方式,&是引用傳遞方式。預設為值傳遞。
Lambda更多地被用為實現匿名函式。
例子:
string str("afbjec"); sort(str.begin(),str.end(),[](const char a,const char b)->bool {return a > b;}); //也可以sort(str.begin(),str.end(),[](const char a,const char b){return a > b;}); int upper = 0; for_each(str.begin(),str.end(),[&upper](char c){ if(isupper(c)) upper++; });
使用nullptr代表空指標,取代原來的NULL