不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦 > 知識(shí)大全 > 知識(shí)百科 > 百科知識(shí) > 什么是構(gòu)造函數(shù)的意思概念介紹應(yīng)用

什么是構(gòu)造函數(shù)的意思概念介紹應(yīng)用

時(shí)間: 謝君787 分享

什么是構(gòu)造函數(shù)的意思概念介紹應(yīng)用

  特別的一個(gè)類可以有多個(gè)構(gòu)造函數(shù) ,可根據(jù)其參數(shù)個(gè)數(shù)的不同或參數(shù)類型的不同來(lái)區(qū)分它們,那么你對(duì)構(gòu)造函數(shù)了解多少呢?以下是由學(xué)習(xí)啦小編整理關(guān)于的內(nèi)容,希望大家喜歡!

  什么是構(gòu)造函數(shù)

  構(gòu)造函數(shù) ,是一種特殊的方法。主要用來(lái)在創(chuàng)建對(duì)象時(shí)初始化對(duì)象, 即為對(duì)象成員變量賦初始值,總與new運(yùn)算符一起使用在創(chuàng)建對(duì)象的語(yǔ)句中。特別的一個(gè)類可以有多個(gè)構(gòu)造函數(shù) ,可根據(jù)其參數(shù)個(gè)數(shù)的不同或參數(shù)類型的不同來(lái)區(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)。它沒(méi)有返回值,也不能用void來(lái)修飾。這就保證了它不僅什么也不用自動(dòng)返回,而且根本不能有任何選擇。而其他方法都有返回值,即使是void返回值。盡管方法體本身不會(huì)自動(dòng)返回什么,但仍然可以讓它返回一些東西,而這些東西可能是不安全的;

  3.構(gòu)造函數(shù)不能被直接調(diào)用,必須通過(guò)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ù)中指定初始化的工作也可省略,不過(guò)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ù),將無(wú)法通過(guò)new關(guān)鍵字來(lái)創(chuàng)建其對(duì)象,當(dāng)一個(gè)類沒(méi)有定義任何構(gòu)造函數(shù),C#編譯器會(huì)為其自動(dòng)生成一個(gè)默認(rèn)的無(wú)參的構(gòu)造函數(shù)。

  構(gòu)造函數(shù)的應(yīng)用

  C++構(gòu)造函數(shù)

  C++語(yǔ)言為類提供的構(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)語(yǔ)句時(shí)才被調(diào)用。然而給出一個(gè)外部對(duì)象的引用性聲明時(shí),并不調(diào)用相應(yīng)的構(gòu)造函數(shù),因?yàn)檫@個(gè)外部對(duì)象只是引用在其他地方聲明的對(duì)象,并沒(méi)有真正地創(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è)類中沒(méi)有定義任何的構(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í)行任何操作。
看過(guò)“構(gòu)造函數(shù)的應(yīng)用“的人還看了:

1.2016高考數(shù)學(xué)必考點(diǎn)掌握

2.二次函數(shù)在高中階段的應(yīng)用

3.初三數(shù)學(xué)思維方法

4.中考數(shù)學(xué)壓軸題常見(jiàn)類型

5.2016高考數(shù)學(xué)答題方法求函數(shù)值域

6.2015年計(jì)算機(jī)二級(jí)《C++》考前沖刺試卷

1415548