什么是構(gòu)造函數(shù)的意思概念介紹應(yīng)用
什么是構(gòu)造函數(shù)的意思概念介紹應(yīng)用
特別的一個(gè)類可以有多個(gè)構(gòu)造函數(shù) ,可根據(jù)其參數(shù)個(gè)數(shù)的不同或參數(shù)類型的不同來區(qū)分它們,那么你對(duì)構(gòu)造函數(shù)了解多少呢?以下是由學(xué)習(xí)啦小編整理關(guān)于的內(nèi)容,希望大家喜歡!
什么是構(gòu)造函數(shù)
構(gòu)造函數(shù) ,是一種特殊的方法。主要用來在創(chuàng)建對(duì)象時(shí)初始化對(duì)象, 即為對(duì)象成員變量賦初始值,總與new運(yùn)算符一起使用在創(chuàng)建對(duì)象的語句中。特別的一個(gè)類可以有多個(gè)構(gòu)造函數(shù) ,可根據(jù)其參數(shù)個(gè)數(shù)的不同或參數(shù)類型的不同來區(qū)分它們 即構(gòu)造函數(shù)的重載。
構(gòu)造函數(shù)的特點(diǎn)
1.構(gòu)造函數(shù)的命名必須和類名完全相同。在java中普通函數(shù)可以和構(gòu)造函數(shù)同名,但是必須帶有返回值;
2.構(gòu)造函數(shù)的功能主要用于在類的對(duì)象創(chuàng)建時(shí)定義初始化的狀態(tài)。它沒有返回值,也不能用void來修飾。這就保證了它不僅什么也不用自動(dòng)返回,而且根本不能有任何選擇。而其他方法都有返回值,即使是void返回值。盡管方法體本身不會(huì)自動(dòng)返回什么,但仍然可以讓它返回一些東西,而這些東西可能是不安全的;
3.構(gòu)造函數(shù)不能被直接調(diào)用,必須通過new運(yùn)算符在創(chuàng)建對(duì)象時(shí)才會(huì)自動(dòng)調(diào)用;而一般的方法是在程序執(zhí)行到它的時(shí)候被調(diào)用的;
4.當(dāng)定義一個(gè)類的時(shí)候,通常情況下都會(huì)顯示該類的構(gòu)造函數(shù),并在函數(shù)中指定初始化的工作也可省略,不過Java編譯器會(huì)提供一個(gè)默認(rèn)的構(gòu)造函數(shù).此默認(rèn)構(gòu)造函數(shù)是不帶參數(shù)的。而一般的方法不存在這一特點(diǎn);
5.構(gòu)造函數(shù)有回滾的效果,構(gòu)造函數(shù)拋出異常時(shí),構(gòu)造的是一個(gè)不完整對(duì)象,會(huì)回滾,將此不完整對(duì)象的成員釋放(c++)
6.當(dāng)一個(gè)類只定義了私有的構(gòu)造函數(shù),將無法通過new關(guān)鍵字來創(chuàng)建其對(duì)象,當(dāng)一個(gè)類沒有定義任何構(gòu)造函數(shù),C#編譯器會(huì)為其自動(dòng)生成一個(gè)默認(rèn)的無參的構(gòu)造函數(shù)。
構(gòu)造函數(shù)的應(yīng)用
C++構(gòu)造函數(shù)
C++語言為類提供的構(gòu)造函數(shù)可自動(dòng)完成對(duì)象的初始化任務(wù),全局對(duì)象和靜態(tài)對(duì)象的構(gòu)造函數(shù)在main()函數(shù)執(zhí)行之前就被調(diào)用,局部靜態(tài)對(duì)象的構(gòu)造函數(shù)是當(dāng)程序第一次執(zhí)行到相應(yīng)語句時(shí)才被調(diào)用。然而給出一個(gè)外部對(duì)象的引用性聲明時(shí),并不調(diào)用相應(yīng)的構(gòu)造函數(shù),因?yàn)檫@個(gè)外部對(duì)象只是引用在其他地方聲明的對(duì)象,并沒有真正地創(chuàng)建一個(gè)對(duì)象。
C++的構(gòu)造函數(shù)定義格式為:
class <類名>
{
public:
<類名>(參數(shù)表)
//...(還可以聲明其它成員函數(shù))
};
<類名>::<函數(shù)名>(參數(shù)表)
{
//函數(shù)體
}
如以下定義是合法的:
class T
{
public:
T(int a=0){i=a;}//構(gòu)造函數(shù)允許直接寫在類定義內(nèi),也允許有參數(shù)表。
private:int i;
};
如果一個(gè)類中沒有定義任何的構(gòu)造函數(shù),那么編譯器只有在以下三種情況,才會(huì)提供默認(rèn)的構(gòu)造函數(shù):
1、如果類有虛擬成員函數(shù)或者虛擬繼承父類(即有虛擬基類)時(shí);
2、如果類的基類有構(gòu)造函數(shù)(可以是用戶定義的構(gòu)造函數(shù),或編譯器提供的默認(rèn)構(gòu)造函數(shù));
3、在類中的所有非靜態(tài)的對(duì)象數(shù)據(jù)成員,它們對(duì)應(yīng)的類中有構(gòu)造函數(shù)(可以是用戶定義的構(gòu)造函數(shù),或編譯器提供的默認(rèn)構(gòu)造函數(shù))。
<類名>::<類名>(){},即不執(zhí)行任何操作。
看過“構(gòu)造函數(shù)的應(yīng)用“的人還看了:
1.2016高考數(shù)學(xué)必考點(diǎn)掌握