C++中有這么一種特殊的函數,它在類里,與類名同名,且沒有返回值的一個函數,只要我們定義一個類的對象,系統就會自動調用它,進行專門的初始化對象用,而大多數情況下,因為我們沒有定義構造函數,系統會默認生成一個默認形式、隱藏著的構造函數,這個構造函數的函數體是空著的,因此不具有任何功能。
成人app那么下來,我們將教大家如何定義自己的構造函數,需要用戶自行定義了至少一個構造函數,系統就不在自動生成,而是根據用戶定義的構造函數選擇最匹配的一個進行調用。
例如還是Student類的例子,我們添加一個帶有默認參數的構造函數,代碼如下:
#include<iostream> #include<Cstring> using namespace std; class Student { private: int num;//學號 char name[100];//名字 int score;//成績 public: Student(int n,char *str,int s); int print(); int Set(int n,char *str,int s); }; Student::Student(int n,char *str,int s) { num = n; strcpy(name,str); score = s; cout<<"Constructor"<<endl; } int Student::print() { cout<<num<<" "<<name<<" "<<score; return 0; } int Student::Set(int n,char *str,int s) { num = n; strcpy(name,str); score = s; } int main() { Student A(100,"dotcpp",11); A.print(); return 0; }
成人app即可以在定義的同時調用構造函數,實現初始化的作用,運行如下圖:
需要注意的時,由于我們已經在類中定義了一個帶默認參數的構造函數,則系統不會再自動生成,這個時候我們定義對象的時候也需要傳入三個默認初始值,因為構造函數可以重載,系統會找最匹配的一個函數,但如果定義時不是帶默認參數的構造函數,則會報錯,請大家自行上機實驗!
本文固定URL:http://hnsaiyang.com/course/66