欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

類的默認(rèn)成員函數(shù)

類的六個(gè)默認(rèn)成員函數(shù):構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù)、賦值操作符重載、取地址的操作符重載、const修飾的取地址操作符重載。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了武城免費(fèi)建站歡迎大家使用!

1.【構(gòu)造函數(shù)】

成員變量為私有的,要對(duì)它們進(jìn)行初始化,必須用一個(gè)公有成員函數(shù)來進(jìn)行。同時(shí)這個(gè)函數(shù)應(yīng)該有且僅在定義對(duì)象時(shí)自動(dòng)執(zhí)行一次,這時(shí)

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

構(gòu)造函數(shù)是特殊的成員函數(shù),其特征如下:

1. 函數(shù)名與類名相同。

2. 無返回值。

3. 對(duì)象構(gòu)造(對(duì)象實(shí)例化)時(shí)系統(tǒng)自動(dòng)調(diào)用對(duì)應(yīng)的構(gòu)造函數(shù)。

4. 構(gòu)造函數(shù)可以重載。

5. 構(gòu)造函數(shù)可以在類中定義,也可以在類外定義。

6. 如果類定義中沒有給出構(gòu)造函數(shù),則C++編譯器自動(dòng)產(chǎn)生一個(gè)缺省的構(gòu)造函數(shù),但只要我們定義了一個(gè)構(gòu)造函數(shù),系統(tǒng)就不會(huì)自動(dòng)

生成缺省的構(gòu)造函數(shù)。

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

class Date
{
  public:
    // 1.無參構(gòu)造函數(shù)
    Date ()
    {}
    // 2.帶參構(gòu)造函數(shù)
    Date (int year, int month , int day )
    {
        _year = year ;
        _month = month ;
        _day = day ;
    }
 private:
        int _year ;
        int _month ;
        int _day ;
};
    void TestDate1 ()
    {
    Date d1 ; // 調(diào)用無參構(gòu)造函數(shù)
    Date d2 (2015, 1, 1); // 調(diào)用帶參的構(gòu)造函數(shù)
    }

2.【拷貝構(gòu)造函數(shù)】

創(chuàng)建對(duì)象時(shí)使用同類對(duì)象來進(jìn)行初始化,這時(shí)所用的構(gòu)造函數(shù)稱為拷貝構(gòu)造函數(shù)(Copy Constructor),拷貝構(gòu)造函數(shù)是特殊的構(gòu)造函

數(shù)。

特征:

1. 拷貝構(gòu)造函數(shù)其實(shí)是一個(gè)構(gòu)造函數(shù)的重載。

2. 拷貝構(gòu)造函數(shù)的參數(shù)必須使用引用傳參,使用傳值方式會(huì)引發(fā)無窮遞歸調(diào)用。

3. 若未顯示定義,系統(tǒng)會(huì)默認(rèn)缺省的拷貝構(gòu)造函數(shù)。缺省的拷貝構(gòu)造函數(shù)會(huì),依次拷貝類成員進(jìn)行初始化。

class Date
{
public :
    Date()
    {}
// 拷貝構(gòu)造函數(shù)
    Date (const Date& d)
    {
        _year = d ._year;
        _month = d ._month;
        _day = d ._day;
    }
private :
    int _year ;
    int _month ;
    int _day ;
};
void TestDate1 ()
{
    Date d1
    Date d2 (d1); // 調(diào)用拷貝構(gòu)造函數(shù)
 }

3.【析構(gòu)函數(shù)】

當(dāng)一個(gè)對(duì)象的生命周期結(jié)束時(shí),C++編譯系統(tǒng)會(huì)自動(dòng)調(diào)用一個(gè)成員函數(shù),這個(gè)特殊的成員函數(shù)即析構(gòu)函數(shù)(destructor)

構(gòu)造函數(shù)是特殊的成員函數(shù),其特征如下:

1. 析構(gòu)函數(shù)在類名加上字符~。

2. 析構(gòu)函數(shù)無參數(shù)無返回值。

3. 一個(gè)類有且只有一個(gè)析構(gòu)函數(shù)。若未顯示定義,系統(tǒng)會(huì)自動(dòng)生成缺省的析構(gòu)函數(shù)。

4. 對(duì)象生命周期結(jié)束時(shí),C++編譯系統(tǒng)系統(tǒng)自動(dòng)調(diào)用析構(gòu)函數(shù)。

5. 注意析構(gòu)函數(shù)體內(nèi)并不是刪除對(duì)象,而是做一些清理工作。

class Date
{
public :
// 析構(gòu)函數(shù)
    ~Date()
    {}
private :
    int _year ;
    int _month ;
    int _day ;
};

4.【賦值運(yùn)算符重載】

1、拷貝構(gòu)造函數(shù)是創(chuàng)建的對(duì)象,使用一個(gè)已有對(duì)象來初始化這個(gè)準(zhǔn)備創(chuàng)建的對(duì)象。

2、賦值運(yùn)算符的重載是對(duì)一個(gè)已存在的對(duì)象進(jìn)行拷貝賦值。

class Date
{
public :
    Date()
    {}
    // 拷貝構(gòu)造函數(shù)
    Date (const Date& d)
        : _year(d._year)
        , _month(d._month)
        , _day(d._day)
       {}
// 賦值操作符的重載
Date& operator = (const Date& d)
{
    if (this != &d)
    {
    this->_year = d. _year;
    this->_month = d. _month;
    this->_day = d. _day;
}
    return *this ;
}
private:
    int _year ;
    int _month ;
    int _day ;
};
void Test ()
{
    Date d1 ;
    Date d2 = d1; // 調(diào)用拷貝構(gòu)造函數(shù)
    Date d3 ;
    d3 = d1 ; // 調(diào)用賦值運(yùn)算符的重載
 }

操作符重載實(shí)現(xiàn)的加減乘除

	Date operator= (const Date &g)
	{
		if (this != &g)
		{
			_year=g._year;
			_month=g._month;
			_day=g._day;
		}
		return *this;
	}
	Date operator+ (const Date g)
	{
		Date d;
		d._year = _year + g._year;
		d._month = _month + g._month;
		d._day = _day + g._day;
		return d;
	}
	Date operator+= (const Date g)
	{
		_year += g._year;
		_month += g._month;
		_day += g._day;
		return *this;
	}
	Date operator-(const Date g)
	{
		Date d;
		d._year=_year-g._year;
		d._month=_month-g._month;
		d._day=_day-g._day;
		return d;
	}

在C++中比較常用的就是以上四個(gè)默認(rèn)成員函數(shù),我們?cè)谑煜ち艘陨纤膫€(gè)默認(rèn)函數(shù)的特點(diǎn)和用法之后,我們可以練習(xí)實(shí)現(xiàn)一個(gè)復(fù)數(shù)類。

class Complex
{
public:
	Complex()
	{}//無參構(gòu)造函數(shù)
	Complex(int real,int empty)
	{
		_real=real;
		_empty=empty;
	}//帶參構(gòu)造函數(shù)
	Complex (const Complex& g)
	{
		_real=g._real;
		_empty=g._empty;
	}//拷貝構(gòu)造函數(shù)
	void Display()
	{
		cout<<"real:"<< _real<<"empty:"<< _empty<<endl;
	}
	~Complex()
	{
		cout<<"~Complex()"<<endl;
	}//析構(gòu)函數(shù)
	Complex operator+ (const Complex g)
	{
		Complex d;
		d._real=_real+g._real;
		d._empty=_empty+g._empty;
		return d;
	}//賦值操作符重載函數(shù)
private:
	int _real;
	int _empty;
};
int main()
{
	Complex c(10,5);
	Complex e(c);
	e.Display();
	c.Display();
	Complex g;
	g=c+e;
	g.Display();
	return 0;
}

分享文章:類的默認(rèn)成員函數(shù)
地址分享:http://chinadenli.net/article12/pgjggc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄電子商務(wù)外貿(mào)網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)自適應(yīng)網(wǎng)站域名注冊(cè)

廣告

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

搜索引擎優(yōu)化