預設構造函式又叫默認構造函式,英文名稱default constructor,是當聲明對象的時候,編譯器會調用的一個構造函式。
在計算機程式語言中,預設構造函式可以指編譯器在沒有任何程式設計師定義的構造函式(例如Java)的情況下自動生成的構造函式,通常是無用的構造函式。 在其他語言中(例如在C ++中),無論構造函式是自動生成的還是用戶定義的,它都是可以調用的構造函式,無需提供任何參數。 請注意,如果在構造函式的定義中提供了默認參數,那么帶有形參的構造函式仍然可以不帶參數地被調用。
基本介紹
- 中文名:預設構造函式
- 外文名:default constructor
C++
class MyClass{public: MyClass(); // constructor declaredprivate: int x;};MyClass::MyClass() : x(100) // constructor defined{}int main(){ MyClass m; // at runtime, object m is created, and the default constructor is called}
int main(){ MyClass * pointer = new MyClass(); // at runtime, an object is created, and the // default constructor is called}
class MyClass{public: MyClass (int i = 0, std::string s = ""); // constructor declaredprivate: int x; int y; std::string z;};MyClass::MyClass(int i, std::string s) // constructor defined{ x = 100; y = i; z = s;}
class MyClass{ int x; // no constructor, so the compiler produces an (implicit) default constructor};int main(){ MyClass m; // no error at runtime: the (implicit) default constructor is called}
class MyClass{public: MyClass (int y); // declaration a non-default constructorprivate: int x;};MyClass::MyClass (int y){ x = y;}int main(){ MyClass m(100); // the non-default constructor is called MyClass * p; // for pointer declarations, the compiler does not need to know about constructors p = new MyClass(); // error at compilation: no default constructor return 0;}
class MyClass{public: MyClass () = default; // force generation of a default constructor};