程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++11 標准新特性:Defaulted 和 Deleted 函數,defaulteddeleted

C++11 標准新特性:Defaulted 和 Deleted 函數,defaulteddeleted

編輯:C++入門知識

C++11 標准新特性:Defaulted 和 Deleted 函數,defaulteddeleted


本文參考:http://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/#ibm-pcon

C++11 標准的兩個新特性:defaulted 和 deleted 函數。對於 defaulted 函數,編譯器會為其自動生成默認的函數定義體,從而獲得更高的代碼執行效率,也可免除程序員手動定義該函數的工作量。對於 deleted 函數, 編譯器會對其禁用,從而避免某些非法的函數調用或者類型轉換,從而提高代碼的安全性

C++ 的類有四類特殊成員函數,它們分別是:默認構造函數、析構函數、拷貝構造函數以及拷貝賦值運算符。這些類的特殊成員函數負責創建、初始化、銷毀,或者拷貝類的對象。如果程序員沒有顯式地為一個類定義某個特殊成員函數,而又需要用到該特殊成員函數時,則編譯器會隱式的為這個類生成一個默認的特殊成員函數。

 

defaulted函數的提出

1. 減輕程序員的編程工作量;2. 獲得編譯器自動生成的默認特殊成員函數的高的代碼執行效率。

程序員只需在函數聲明後加上“=default;”,就可將該函數聲明為 defaulted 函數,編譯器將為顯式聲明的defaulted 函數自動生成函數體。

 

deleted函數的提出

為了能夠讓程序員顯式的禁用某個函數,C++11 標准引入了一個新特性:deleted 函數。程序員只需在函數聲明後加上“=delete;”,就可將該函數禁用。

deleted 函數特性還可用於禁用類的某些轉換構造函數,從而避免不期望的類型轉換。

deleted 函數特性還可以用來禁用某些用戶自定義的類的 new 操作符,從而避免在自由存儲區創建類的對象。

 


注意:

只有4類特殊成員函數才能被聲明為defaulted函數,而deleted函數特性並無此限制

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved