程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++筆記

C++筆記

編輯:C++入門知識

1,因此,某些時候,explicit 可以有效得防止構造函數的隱式轉換帶來的錯誤或者誤解
2,
explicit 只對構造函數起作用,用來抑制隱式轉換。如:
class A {
A(int a);
};
int Function(A a);

當調用 Function(2) 的時候,2 會隱式轉換為 A 類型。這種情況常常不是程序員想要的結果,所以,要避免之,就可以這樣寫:

class A {
explicit A(int a);
};
int Function(A a);

這樣,當調用 Function(2) 的時候,編譯器會給出錯誤信息(除非 Function 有個以 int 為參數的重載形式),這就避免了在程序員毫不知情的情況下出現錯誤。
3, 構造函數的explicit關鍵詞有效阻止從一個“裸”指針隱式轉換成auto_ptr類型。
 
 
 
4,與引用計數型智能指針不同的,auto_ptr要求其對“裸”指針的完全占有性。也就是說一個”裸“指針不能同時被兩個以上的auto_ptr所擁有。那麼,在拷貝構造或賦值操作時,我們必須作特殊的處理來保證這個特性。auto_ptr的做法是“所有權轉移”,即拷貝或賦值的源對象將失去對“裸”指針的所有權,所以,與一般拷貝構造函數,賦值函數不同, auto_ptr的拷貝構造函數,賦值函數的參數為引用而不是常引用

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