中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

C++6個默認(rèn)成員函數(shù)

問題:C++中的空類,默認(rèn)情況下會產(chǎn)生哪些類成員函數(shù)?

馬關(guān)網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)2013年至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。

     系統(tǒng)默認(rèn)的缺省構(gòu)造函數(shù)和拷貝構(gòu)造函數(shù)(復(fù)制構(gòu)造函數(shù))

     系統(tǒng)默認(rèn)提供的析構(gòu)函數(shù).

     系統(tǒng)默認(rèn)的運(yùn)算符重載函數(shù)(拷貝賦值函數(shù)):用于同類對象之間的賦值.

     系統(tǒng)默認(rèn)的取值運(yùn)算:當(dāng)對類的對象進(jìn)行取地址(&)時會被調(diào)用.

1.構(gòu)造函數(shù)法和析構(gòu)函數(shù)存在的必要性和作用:

(1).構(gòu)造函數(shù)的必要性和作用(用構(gòu)造函數(shù)確保初始化):

    1. 解決同種類型的不同對象的初始化問題.

    2. 保證每個對象的數(shù)據(jù)成員都有合適的初始值。

(2).析構(gòu)函數(shù)的必要性和作用(用析構(gòu)函數(shù)確保清除):

    1. 回收內(nèi)存和資源,通常用于釋放在構(gòu)造函數(shù)或?qū)ο笊趦?nèi)獲取的資源。

    2. 當(dāng)對象超出它的定義范圍時,編譯器自動調(diào)用析構(gòu)函數(shù).

2.構(gòu)造函數(shù)和析構(gòu)函數(shù)的種類:

(1).一個類可以有多個構(gòu)造函數(shù)(即構(gòu)造函數(shù)的重載).

  a. 缺省構(gòu)造函數(shù):不帶任何參數(shù)的構(gòu)造函數(shù).

    當(dāng)編譯器需要創(chuàng)建一個對象而又不知任何細(xì)節(jié)時,缺省的構(gòu)造函數(shù)就顯得非常重要.在一個構(gòu)造類型中沒有構(gòu)造函數(shù)時,編譯器會自動創(chuàng)建一個,然而,一旦有其他的構(gòu)造函數(shù)之后就沒有缺省構(gòu)造函數(shù).

  b. 重載的構(gòu)造函數(shù):帶參數(shù)的構(gòu)造函數(shù).

    屬于類成員函數(shù)的重載,通過參數(shù)的個數(shù),類型和順序形成重載的條件.其中特殊情況是:

       如果類中有其他的構(gòu)造函數(shù)的話,系統(tǒng)就不會提供默認(rèn)的缺省構(gòu)造函數(shù)以構(gòu)造對象.

       如果類中構(gòu)造函數(shù)帶有默認(rèn)參數(shù)的話,防止出現(xiàn)重載二義性而出錯.                      類中的構(gòu)造函數(shù)形成重載時,注意防止重載函數(shù)中存在隱式類型轉(zhuǎn)換而出現(xiàn)重載的二義性. 

     

  c. 拷貝構(gòu)造函數(shù)(復(fù)制構(gòu)造函數(shù)):

     分為系統(tǒng)提供默認(rèn)的復(fù)制構(gòu)造函數(shù)(即淺拷貝或者全盤拷貝),以及自定義的復(fù)制構(gòu)造函數(shù)(即深拷貝或者部分拷貝).    

(2).一個類只有一個析構(gòu)函數(shù)(即析構(gòu)函數(shù)不存在重載),

     析構(gòu)函數(shù)也分為系統(tǒng)默認(rèn)的和自定義的析構(gòu)函數(shù)(完成指定的其他功能).

3.關(guān)于拷貝構(gòu)造函數(shù)(復(fù)制構(gòu)造函數(shù))具體知識點(diǎn):

(1).定義格式:

  類名 (類名+&對象)

{

}

特點(diǎn):無返回值,參數(shù)只有且只能是同類對象的引用.

解疑:為什么不允許定義這種形式 A(A copy) 的拷貝構(gòu)造函數(shù)?

    這個拷貝構(gòu)造函數(shù)在參數(shù)傳遞的過程中又要調(diào)用拷貝構(gòu)造函數(shù)本身,而調(diào)用拷貝構(gòu)造函數(shù)時又要先進(jìn)行參數(shù)傳遞,參數(shù)傳遞又要調(diào)用拷貝構(gòu)造函數(shù)。。。。。。于是陷入不停的分配堆棧的無限遞歸中,而每次壓棧過程中又嵌套了壓棧,致使每一次的壓棧都不能完成,因此,編譯器通過不了這種形式的拷貝構(gòu)造函數(shù)。

(2).拷貝構(gòu)造函數(shù)和賦值運(yùn)算符重載的比較:

不同的地方:

       a.拷貝構(gòu)造函數(shù)是在對象被創(chuàng)建并用另一個已經(jīng)存在的對象來初始化它時調(diào)用的;

      如string s1 = "Hello World";

       string s2 = s1;  //等價于string s2(s1);

        b.拷貝賦值函數(shù)只能把一個對象賦值給另一個已經(jīng)存在的對象,使得那個已經(jīng)存在的對象具有和源對象相同的狀態(tài)。

        如 string s3;

        s3 = s1;

相同的地方:

       默認(rèn)的拷貝構(gòu)造函數(shù)和默認(rèn)的賦值運(yùn)算符重載均采用“按成員拷貝”默認(rèn)方式來實(shí)現(xiàn)。

       以類String的兩個對象a、b為例。假設(shè)a.m_data的內(nèi)容為“Hello”,b.m_data的內(nèi)容為“world”?,F(xiàn)將a賦值給b,默認(rèn)賦值運(yùn)算符重載的“按成員拷貝”意味著執(zhí)行b.m_data=a.m_data。這將造成三個錯誤:

(1)b.m_data原持有的內(nèi)存沒有被釋放,造成內(nèi)存泄漏。

(2)b.m_data和a.m_data指向同一塊內(nèi)存區(qū)域,a或b任何一方變動都會影響另一方

(3)在對象被析構(gòu)時,m_data被delete了兩次。

4.構(gòu)造函數(shù)的初始化列表知識點(diǎn):

1).初始化列表的構(gòu)造順序:

     初始化列表中個數(shù)據(jù)成員的構(gòu)造順序與其聲明的順序一致.而不是按照出現(xiàn)在初始化列表的順序相關(guān).

2.)必須使用初始化列表的情況?

    引用(const)成員和reference類型的成員只能被初始化而不能在初始化列表外進(jìn)行賦值操作.

    類的繼承中基類的構(gòu)造函數(shù)必須通過初始化列表來調(diào)用(先調(diào)用基類構(gòu)造函數(shù),然后才是自身的構(gòu)造函數(shù)).

    類的聚合中聚合類的嵌套對象的構(gòu)造可以放在其構(gòu)造函數(shù)體內(nèi)進(jìn)行賦值而不必一定初始化才行,和普通的成員變量一致.

網(wǎng)站題目:C++6個默認(rèn)成員函數(shù)
分享路徑:http://www.rwnh.cn/article20/jeesco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站收錄、小程序開發(fā)云服務(wù)器、軟件開發(fā)、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
雅江县| 开化县| 苗栗县| 武宁县| 万全县| 临汾市| 将乐县| 广安市| 高密市| 东乡族自治县| 马鞍山市| 元朗区| 定南县| 武夷山市| 确山县| 咸丰县| 承德县| 那坡县| 明光市| 福州市| 泰顺县| 广饶县| 黑河市| 饶河县| 开江县| 顺平县| 西乌珠穆沁旗| 白山市| 宜州市| 博罗县| 南京市| 沾益县| 通化市| 铜梁县| 房山区| 满城县| 随州市| 长沙市| 彩票| 拜城县| 云龙县|