0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

如意 ? 來源:百家號 ? 作者:cherrydreamsover ? 2020-06-29 11:44 ? 次閱讀

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

1.概念

構(gòu)造函數(shù):一個特殊的成員函數(shù),名字與類名相同,創(chuàng)建類類型對象的時候,由編譯器自動調(diào)用,在對象的生命周期內(nèi)只且調(diào)用一次,以保證每個數(shù)據(jù)成員都有一個合適的初始值。

2.構(gòu)造函數(shù)的特性

函數(shù)名和類名相同;

沒有返回值;

有初始化列表(可以不用);

新對象被創(chuàng)建,由編譯器自動調(diào)用,且在對象的生命周期內(nèi)僅調(diào)用一次;

構(gòu)造函數(shù)可以重載,實(shí)參決定了調(diào)用哪個構(gòu)造函數(shù);

如果沒有顯示的調(diào)用時,編譯器會提供一個默認(rèn)的構(gòu)造函數(shù);

無參構(gòu)造函數(shù)和帶有缺省值的構(gòu)造函數(shù)都認(rèn)為是缺省構(gòu)造函數(shù),并且缺省構(gòu)造函數(shù)只能有一個;

構(gòu)造函數(shù)不能用const修飾(因為const修飾類的成員函數(shù)時,該函數(shù)不能修改成員變量,但是構(gòu)造函數(shù)要修改類的成員變量,因此不可以由const修飾)

3.初始化列表

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

以冒號開始,接著是以逗號分隔的數(shù)據(jù)成員列表,每個數(shù)據(jù)成員后面跟一個放在圓括號中的初始化式。

4.初始化順序

數(shù)據(jù)成員在類中定義的順序就是參數(shù)列表中的初始化順序;

初始化列表僅用于初始化數(shù)據(jù)成員,并不指定這些數(shù)據(jù)成員的初始化順序;

每個成員在初始化列表中只能出現(xiàn)一次;

盡量避免使用成員初始化成員,成員初始化順序最好和成員的定義順序保持一致。

類中包含以下成員必須要放在初始化列表中初始化:

(1)引用數(shù)據(jù)類型

(2)const數(shù)據(jù)類型

(3)類類型成員(該類沒有缺省的構(gòu)造函數(shù))

5.默認(rèn)構(gòu)造函數(shù)

默認(rèn)構(gòu)造函數(shù)使用與成員變量初始化相同的規(guī)則初始化成員,對于內(nèi)置類型和復(fù)合類型的成員,如組、指針,只對定義在全局定義作用于的對象初始化,對于局部作用域的內(nèi)置和復(fù)合類型不作初始化。

6.構(gòu)造函數(shù)的作用

構(gòu)建對象

初始化對象

類型轉(zhuǎn)換

7.explcit

用explicit修飾構(gòu)造函數(shù),抑制由構(gòu)造函數(shù)定義的隱式轉(zhuǎn)換,explicit關(guān)鍵字類內(nèi)部的構(gòu)建聲明上,在類的定義體外部的定義上不再重復(fù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2090

    瀏覽量

    73404
  • 構(gòu)造函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    2730
收藏 人收藏

    評論

    相關(guān)推薦

    請問STM32 C++構(gòu)造函數(shù)怎么修改才能實(shí)現(xiàn)全局變量的初始化呢?

    在STM32F10X項目中使用了C++的特性,使用arm-none-eabi-g++編譯,程序可以正常運(yùn)行。問題: C++定義的全局變量,其類的構(gòu)造函數(shù)不被執(zhí)行,在
    發(fā)表于 10-10 08:45

    C++教程之函數(shù)的遞歸調(diào)用

    C++教程之函數(shù)的遞歸調(diào)用 在執(zhí)行函數(shù) f 的過程中,又要調(diào)用 f 函數(shù)本身,稱為函數(shù)的遞歸調(diào)用;形式上:一個正在執(zhí)行的
    發(fā)表于 05-15 18:00 ?35次下載

    C++課程資料詳細(xì)資料合集包括了:面向?qū)ο蟪绦蛟O(shè)計與C++,算法,函數(shù)

    本文檔的主要內(nèi)容詳細(xì)介紹的是C++課程資料資料合集包括了:面向?qū)ο蟪绦蛟O(shè)計與C++,算法,函數(shù),概述, C++語言基礎(chǔ),構(gòu)造數(shù)據(jù)類型,數(shù)據(jù)類
    發(fā)表于 07-09 08:00 ?18次下載
    <b class='flag-5'>C++</b>課程資料詳細(xì)資料合集包括了:面向?qū)ο蟪绦蛟O(shè)計與<b class='flag-5'>C++</b>,算法,<b class='flag-5'>函數(shù)</b>等

    如何深度解析C++拷貝構(gòu)造函數(shù)詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何深度解析C++拷貝構(gòu)造函數(shù)詳細(xì)資料說明。
    發(fā)表于 07-05 17:41 ?0次下載
    如何深度解析<b class='flag-5'>C++</b>拷貝<b class='flag-5'>構(gòu)造</b><b class='flag-5'>函數(shù)</b>詳細(xì)資料說明

    如何在中斷C函數(shù)中調(diào)用C++

    之前,我們在單片機(jī)程序開發(fā)時都會面對中斷函數(shù)。眾所周知的,這個中斷函數(shù)肯定是要用C函數(shù)來定義的。我在用C++進(jìn)行程序開發(fā)的時候就發(fā)現(xiàn)了一個需
    發(fā)表于 05-09 18:17 ?0次下載
    如何在中斷<b class='flag-5'>C</b><b class='flag-5'>函數(shù)</b>中調(diào)用<b class='flag-5'>C++</b>

    Linux共享庫的構(gòu)造函數(shù)和析構(gòu)函數(shù)

    共享庫有類似C++構(gòu)造和析構(gòu)函數(shù)函數(shù),當(dāng)動態(tài)庫加載和卸載的時候,函數(shù)會被分別執(zhí)行。一個函數(shù)
    的頭像 發(fā)表于 06-22 09:18 ?2273次閱讀
    Linux共享庫的<b class='flag-5'>構(gòu)造</b><b class='flag-5'>函數(shù)</b>和析構(gòu)<b class='flag-5'>函數(shù)</b>

    C++詳談拷貝構(gòu)造函數(shù)

    只有單個形參,而且該形參是對本類類型對象的引用(常用const修飾),這樣的構(gòu)造函數(shù)稱為拷貝構(gòu)造函數(shù)。拷貝構(gòu)造
    的頭像 發(fā)表于 06-29 11:45 ?2079次閱讀
    <b class='flag-5'>C++</b>:<b class='flag-5'>詳談</b>拷貝<b class='flag-5'>構(gòu)造</b><b class='flag-5'>函數(shù)</b>

    C++詳談析構(gòu)函數(shù)的特性和使用

    構(gòu)造函數(shù)功能相反,在對象被銷毀時,由編譯器自動調(diào)用,完成類的一些資源清理和汕尾工作。
    的頭像 發(fā)表于 06-29 11:53 ?2336次閱讀
    <b class='flag-5'>C++</b>:<b class='flag-5'>詳談</b>析構(gòu)<b class='flag-5'>函數(shù)</b>的特性和使用

    C++之拷貝構(gòu)造函數(shù)的淺copy及深copy

    C++編譯器會默認(rèn)提供構(gòu)造函數(shù);無參構(gòu)造函數(shù)用于定義對象的默認(rèn)初始化狀態(tài);拷貝構(gòu)造
    的頭像 發(fā)表于 12-24 15:31 ?671次閱讀

    c++構(gòu)造函數(shù)學(xué)習(xí)的總結(jié)(一)

    關(guān)于這個構(gòu)造函數(shù),簡單理解就是在一個類中,有一個函數(shù),它的函數(shù)名稱和類名同名,而且這個構(gòu)造函數(shù)
    的頭像 發(fā)表于 12-24 18:06 ?677次閱讀

    EE-128:C++中的DSP:從C++調(diào)用匯編類成員函數(shù)

    EE-128:C++中的DSP:從C++調(diào)用匯編類成員函數(shù)
    發(fā)表于 04-16 17:04 ?2次下載
    EE-128:<b class='flag-5'>C++</b>中的DSP:從<b class='flag-5'>C++</b>調(diào)用匯編類成員<b class='flag-5'>函數(shù)</b>

    C++ C語言函數(shù)查詢電子版下載

    C++ C語言函數(shù)查詢電子版下載
    發(fā)表于 01-18 10:15 ?0次下載

    深度解析C++中的虛函數(shù)

    函數(shù)作為C++的重要特性,讓人又愛又怕,愛它功能強(qiáng)大,但又怕駕馭不好,讓它反咬一口,今天我們用CPU的角度,撕掉語法的偽裝,重新認(rèn)識一下虛函數(shù)。 虛函數(shù)
    的頭像 發(fā)表于 02-15 11:14 ?771次閱讀
    深度解析<b class='flag-5'>C++</b>中的虛<b class='flag-5'>函數(shù)</b>

    淺析C++執(zhí)行構(gòu)造函數(shù)編程實(shí)例

    C++保證在你調(diào)用delete時,先自動調(diào)用析構(gòu)函數(shù)(而我們安排在這個函數(shù)里面刪除它的法杖、法袍等對象),再刪除對象占用的內(nèi)存。
    發(fā)表于 03-03 15:44 ?250次閱讀

    C++基礎(chǔ)知識之函數(shù)1

    函數(shù)C++ 中的一個重要概念,它可以讓我們將一段代碼封裝起來,然后在需要的時候調(diào)用它。C++ 中的函數(shù)有以下幾個特點(diǎn): * 函數(shù)
    的頭像 發(fā)表于 04-03 10:34 ?491次閱讀