1. 程式人生 > >C++0x新特性筆記

C++0x新特性筆記

控制函式:

若要禁用建構函式則可在建構函式後用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