C++規定:對於可能只需傳一個參數的默認構造函數,都定義了一種隱式調用。注意:只需傳一個參數不僅指的是只有一個參數的默認構造函數,也指那些包含了定義了參數默認值的那些默認構造函數。
舉例說明:
class MyClass
{
public:
MyClass();
MyClass(string s);
MyClass(int i, int y = 0);
}
這裡的MyClass(string s)函數和MyClass(int i, int y = 0)函數都是可能只需傳一個參數的默認構造函數
看一下使用構造函數構造類對象的情況:
大部分情況下,隱式調用都會產生bug,而且很難察覺。基於此,C++引入explict關鍵字關閉這種隱式調用,避免因為隱式調用而產生的bug。