成人app

C++中的構造函數(Constructor)

點擊打開在線編譯器,邊學邊練

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即可以在定義的同時調用構造函數,實現初始化的作用,運行如下圖:


 cs.png

 

需要注意的時,由于我們已經在類中定義了一個帶默認參數的構造函數,則系統不會再自動生成,這個時候我們定義對象的時候也需要傳入三個默認初始值,因為構造函數可以重載,系統會找最匹配的一個函數,但如果定義時不是帶默認參數的構造函數,則會報錯,請大家自行上機實驗!



本文固定URL:http://hnsaiyang.com/course/66

Dotcpp在線編譯      (登錄可減少運行等待時間)