1、構造函數:構建創造對象時調用的函數。
作用:可以給對象進行初始化。
2、一個類中如果沒有定義構造函數,那麼該類中會有一個默認的空參數構造函數。
如果在類中定義了指定的構造函數,那麼類中默認的構造函數就沒有了。
3、一般函數和構造函數有什麼區別?
(1)構造函數:對象創建時,就會調用與之對應的構造函數,對對象進行初始化。
一般函數:對象創建後,需要函數功能時才進行調用。
(2)構造函數:對象創建時,會調用且只調用一次。
一般函數:對象創建後,可以被多次調用。
4什麼時候定義構造函數?
在描述事物時,該事物一存在就具備的一些內容,這些內容都定義在構造函數中。
構造函數可以有多個,用於對不同對象進行針對性的初始化。
多個構造函數在類中是以重載的形式體現的。
5、構造函數的主要特點
構造函數的功能主要用於在類的對象創建時定義初始化的狀態。它沒有返回值,也不能用void來修飾。這就保證了它不僅什麼也不用自動返回,而且根本不能有任何選擇。而其他方法都有返回值,即使是void返回值。儘管方法體本身不會自動返回什麼,但仍然可以讓它返回一些東西,而這些東西可能是不安全的;
構造函數不能被直接調用,必須通過new運算符在創建對象時纔會自動調用;而一般的方法是在程序執行到它的時候被調用的;
當定義一個類的時候,通常情況下都會顯示該類的構造函數,並在函數中指定初始化的工作也可省略,不過Java編譯器會提供一個默認的構造函數.此默認構造函數是不帶參數的。而一般的方法不存在這一特點;
6應用
C++構造函數
C++語言爲類提供的構造函數可自動完成對象的初始化任務,全局對象和靜態對象的構造函數在main()函數執行之前就被調用,局部靜態對象的構造函數是當程序第一次執行到相應語句時才被調用。然而給出一個外部對象的引用性聲明時,並不調用相應的構造函數,因爲這個外部對象只是引用在其他地方聲明的對象,並沒有真正地創建一個對象。
C++的構造函數定義格式爲:
class <類名>
{
public:
<類名>(參數表);
//...(還可以聲明其它成員函數)
};
<類名>::<函數名>(參數表)
{
//函數體
}
如以下定義是合法的:
class T
{
public:
T(int a=0){ i=a; }//構造函數允許直接寫在類定義內,也允許有參數表。
private:
int i;
};