什麼是建構函式的意思概念介紹應用
特別的一個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們,那麼你對構造函數了解多少呢?以下是由小編整理關於的內容,希望大家喜歡!
什麼是建構函式
建構函式 ,是一種特殊的方法。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。特別的一個類可以有多個建構函式 ,可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。
建構函式的特點
1.建構函式的命名必須和類名完全相同。在java中普通函式可以和建構函式同名,但是必須帶有返回值;
2.建構函式的功能主要用於在類的物件建立時定義初始化的狀態。它沒有返回值,也不能用void來修飾。這就保證了它不僅什麼也不用自動返回,而且根本不能有任何選擇。而其他方法都有返回值,即使是void返回值。儘管方法體本身不會自動返回什麼,但仍然可以讓它返回一些東西,而這些東西可能是不安全的;
3.建構函式不能被直接呼叫,必須通過new運算子在建立物件時才會自動呼叫;而一般的方法是在程式執行到它的時候被呼叫的;
4.當定義一個類的時候,通常情況下都會顯示該類的建構函式,並在函式中指定初始化的工作也可省略,不過Java編譯器會提供一個預設的建構函式.此預設建構函式是不帶引數的。而一般的方法不存在這一特點;
5.建構函式有回滾的效果,建構函式丟擲異常時,構造的是一個不完整物件,會回滾,將此不完整物件的成員釋放***c++***
6.當一個類只定義了私有的建構函式,將無法通過new關鍵字來建立其物件,當一個類沒有定義任何建構函式,C#編譯器會為其自動生成一個預設的無參的建構函式。
建構函式的應用
C++建構函式
C++語言為類提供的建構函式可自動完成物件的初始化任務,全域性物件和靜態物件的建構函式在main******函式執行之前就被呼叫,區域性靜態物件的建構函式是當程式第一次執行到相應語句時才被呼叫。然而給出一個外部物件的引用性宣告時,並不呼叫相應的建構函式,因為這個外部物件只是引用在其他地方宣告的物件,並沒有真正地建立一個物件。
C++的建構函式定義格式為:
class <類名>
{
public:
<類名>***引數表***
//...***還可以宣告其它成員函式***
};
<類名>::<函式名>***引數表***
{
//函式體
}
如以下定義是合法的:
class T
{
public:
T***int a=0***{i=a;}//建構函式允許直接寫在類定義內,也允許有引數表。
i;
};
如果一個類中沒有定義任何的建構函式,那麼編譯器只有在以下三種情況,才會提供預設的建構函式:
1、如果類有虛擬成員函式或者虛擬繼承父類***即有虛擬基類***時;
2、如果類的基類有建構函式***可以是使用者定義的建構函式,或編譯器提供的預設建構函式***;
3、在類中的所有非靜態的物件資料成員,它們對應的類中有建構函式***可以是使用者定義的建構函式,或編譯器提供的預設建構函式***。
<類名>::<類名>******{},即不執行任何操作。
建構函式的應用“的人還: