溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

構(gòu)造和析構(gòu)的基礎(chǔ)知識(shí)

發(fā)布時(shí)間:2020-07-06 15:18:46 來(lái)源:網(wǎng)絡(luò) 閱讀:438 作者:泉奕 欄目:編程語(yǔ)言

前言

  創(chuàng)建一個(gè)對(duì)象時(shí),常常需要做某些初始化的工作,例如對(duì)數(shù)據(jù)成員賦值,注意,類(lèi)的數(shù)據(jù)成員是不能在聲明類(lèi)時(shí)初始化的

  為了解決這個(gè)問(wèn)題,C++編譯器提供了 構(gòu)造函數(shù) 來(lái)處理對(duì)象的初始化。構(gòu)造函數(shù)是一種特殊的成員函數(shù),與其他成員函數(shù)不同,不需要用戶(hù)來(lái)調(diào)用它,而是在建立對(duì)象時(shí)自動(dòng)執(zhí)行。


 構(gòu)造和析構(gòu)的基礎(chǔ)知識(shí)

2、構(gòu)造函數(shù)的分類(lèi)(三個(gè))

 (1)無(wú)參構(gòu)造函數(shù)   

      Test()
      {
               ;
      }

 (2)帶參數(shù)構(gòu)造函數(shù)   

      Test(int a,int b)
      {
                ;
      }

 (3)賦值構(gòu)造函數(shù)

      Test(const Test &obj)
      {
                ;
      }

構(gòu)造函數(shù)的調(diào)用

#include <iostream>
using namespace std;

class Test
{
public:
    Test()          //無(wú)參構(gòu)造函數(shù)
    {
        m_a = 0;
        m_b = 0;
        cout << "無(wú)參構(gòu)造函數(shù)" << endl;
    }
    
    Test(int a)      //一個(gè)參數(shù)的有參構(gòu)造函數(shù)
    {
        m_a = a;
        m_b = b;
    }
    
    Test(int a,int b)  //有參構(gòu)造函數(shù)       //調(diào)用有參構(gòu)造函數(shù)有三種方法
    {
        m_a = a;
        m_b = b;
        cout << "有參構(gòu)造函數(shù)" << endl;
    }
    
    Test(const Test& obj)   //賦值構(gòu)造函數(shù)(copy構(gòu)造函數(shù))
    {
        cout << "我也是構(gòu)造函數(shù)" << endl;
    }
public:
    void print()
    {
        cout << "普通成員函數(shù)" << endl;
    }
protected:    
private:
    int m_a;
    int m_b;
}

void main()
{
    Test t1;   //無(wú)參構(gòu)造函數(shù)的調(diào)用  (對(duì)象后什么都不寫(xiě))
    
    //有參函數(shù)的第一種調(diào)用方法  括號(hào)法
    
    Test t1(1,2);  //調(diào)用兩個(gè)參數(shù)的構(gòu)造函數(shù)   
    t1.ptint();
    
    //有參函數(shù)的第二種調(diào)用方法  =號(hào)法   (=操作不再是C語(yǔ)言中的功能。C++對(duì)= 進(jìn)行了功能性增強(qiáng))
    
    Test t2 = (3,4);  //調(diào)用一個(gè)參數(shù)的構(gòu)造函數(shù)  因?yàn)椋ǎ┨?hào)里是逗號(hào)表達(dá)式,結(jié)果為 4;即最后一個(gè)數(shù)    
    t2.print();
    
    Test t3 = 4;
    t2.print();      //跟 Test t2 = (3,4) 效果是一樣的
    
    //有參函數(shù)的第三種調(diào)用方法  手動(dòng)的調(diào)用構(gòu)造函數(shù)
    Test t4 = Test(1,2);     //調(diào)用了有兩個(gè)參數(shù)的構(gòu)造函數(shù)
                             //直接調(diào)用構(gòu)造函數(shù),會(huì)產(chǎn)生匿名對(duì)象(涉及到匿名對(duì)象的去和留)
    
    cout << "hello" << endl;
}


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI