1. 程式人生 > >C++中的幾種建構函式

C++中的幾種建構函式

看了大神的部落格,感覺很厲害,果斷轉了

C++中的建構函式

C++中的建構函式可以分為4類: 
(1)預設建構函式。以Student類為例,預設建構函式的原型為 
Student();//沒有引數 
(2)初始化建構函式 
Student(int num,int age);//有引數 
(3)複製(拷貝)建構函式 
Student(Student&);//形參是本類物件的引用 
(4)轉換建構函式 
Student(int r) ;//形參時其他型別變數,且只有一個形參

預設和初始化建構函式

預設建構函式和初始化建構函式在定義類的物件的時候,完成物件的初始化工作。

class Student
{
public:
    //預設建構函式
    Student()
    {
       num=1001;
       age=18;     
    }
    //初始化建構函式
    Student(int n,int a):num(n),age(a){}
private:
    int num;
    int age;
};
int main()
{
    //用預設建構函式初始化物件S1
    Student s1;
    //用初始化建構函式初始化物件S2
    Student s2(1002,18);
    return 0;
}

複製(拷貝)建構函式

複製建構函式用於複製本類的物件
 Student  s2(1002,1008);
 Student  s3(s2);//將物件s2複製給s3。注意複製和賦值的概念不同。
1
2
下面這種情況叫做賦值,不呼叫複製建構函式。
 Student s4;
 s4=s2;//這種情況叫做賦值,自己體會吧
1
2
大多數時候,在類中我們沒有聲明覆制建構函式,而是C++自動為我們生成了一個複製建構函式,如下:
 Student(Student &b)
    {
        this.x=b.x;
        this.y=b.y;
    }
1
2
3
4
5
如程式碼所示,它的作用是將一個已存在的物件b,複製給呼叫該複製建構函式的物件。
具體來說,在一下情況發生時,會呼叫複製建構函式: 
用複製的方法,建立一個新物件。
函式的形參為類的物件時。(這點和普通型別的形參類似,要複製一份實參給函式)
函式的返回值是類的物件,在函式中定義的物件,在函式結束後訊息,需要呼叫複製建構函式,建立一個臨時的物件,將該臨時物件返回給呼叫該函式的物件。
預設的複製建構函式,在某些情況下會出現問題,想深入學習可以自行百度。
轉換建構函式

轉換建構函式用於將其他型別的變數,隱式轉換為本類物件。
下面的轉換建構函式,將int型別的r轉換為Student型別的物件,物件的age為r,num為1004.
 Student(int r)
 {
     int num=1004;
     int age= r;
 }

轉換建構函式可以用在哪裡?
假如過載了+號運算子,使得兩個Student類的物件可以相加,其結果為兩個物件的成員變數age之和。
Student s1(01,18);
Student s2(02,20);
s1+s2;  //其值就是s1.age + s2.age = 18+20=36。

---------------------

本文來自 林多 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/zxc024000/article/details/51153743?utm_source=copy