最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++構(gòu)造函數(shù)初始化列表的實現(xiàn)詳解

 更新時間:2022年09月09日 10:29:16   作者:AKA.瞳源治  
構(gòu)造函數(shù)主要作用在于創(chuàng)建對象時為對象的成員屬性賦值,構(gòu)造函數(shù)由編譯器自動調(diào)用,無須手動調(diào)用;析構(gòu)函數(shù)主要作用在于對象銷毀前系統(tǒng)自動調(diào)用,執(zhí)行一 些清理工作

1.前言

初始化就是給變量一個初始值。 初始化的目的是為了讓變量有值,防止使用時出現(xiàn)異常。

在構(gòu)造函數(shù)中,有一項重要功能就是對成員變量進(jìn)行初始化,一般我們采用兩個方法:

對成員變量賦值和采用初始化列表

2.初始化列表

在這之前我們來觀察一下樣例看這兩者之間有什么區(qū)別:

class Date
{
public:
	Date(int year = 1900, int month = 1, int date = 1)
	{
		_year = year;
		_month = month;
		_date = date;
	}//賦值
    Date(int year = 1900, int month = 1, int date = 1)
        :_year(year)
        ,_month(month)
        ,_date(date)
        {}//初始化列表
}

顯然的,初始化列表是以冒號開始,然后緊跟著的是以逗號為分隔符的數(shù)據(jù)成員列表,每個數(shù)據(jù)成員后面都有一個括號,括號中的是該成員變量的初始值或表達(dá)式。其中語句:

_year(year),_month(month),_date(date)

其實就是相當(dāng)于函數(shù)體內(nèi)部的:

_year = year;_month = month;_date = date;

雖然說效率上沒有什么很大區(qū)別,但使書寫更加方便,尤其在成員變量較多時優(yōu)勢更加突出

3.注意事項

1.成員變量的初始化順序與初始化列表中列出的變量的順序無關(guān),它只與成員變量在類中聲明的順序有關(guān)。

如代碼所示:

#include<iostream>
using namespace std;
class A
{
public:
	A(int a)
		:_a1(a)
		, _a2(_a1)
	{}
	void Print()
	{
		cout << _a1 << " " << _a2 << endl;
	}
private:
	int _a2;
	int _a1;
};
int main()
{
	A aa(1);
	aa.Print();
}

結(jié)果:

出現(xiàn)上面結(jié)果,是因為我們在類的聲明中的順序決定了成員變量的賦值,所以在 A類 中先讓 _a2 賦值,然而 _a1還未賦值,所以_a2 的值為一個奇怪的數(shù)字。

2.一般類中我們還需要定義某些特殊成員變量,初始化 這些成員變量的唯一方法就是使用初始化列表。

如代碼所示:

class B {
private:
	int& _b;
	const int _len;
	A _c;
	int* _a;
public:
	//B(int len, int b)
	//	: _len(len)
	//	,_b(b)
	//	,_c(0)
	//{
	//	_a = new int[len];
	//}
	B(int len, int b)
	{
		_len = len;
		_c = 0;
		_b = b;
		_a = new int[len];
	}
};

該代碼中如果用賦值來初始化成員變量的話,會報出以下錯誤:

所以,當(dāng)類中包含了:引用成員變量;const成員變量;自定義類型的成員變量時,必須將這些成員放在初始化列表中進(jìn)行初始化。

結(jié)果:

到此這篇關(guān)于C++構(gòu)造函數(shù)初始化列表的實現(xiàn)詳解的文章就介紹到這了,更多相關(guān)C++構(gòu)造函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 簡單談?wù)凜++ 頭文件系列之(iosfwd)

    簡單談?wù)凜++ 頭文件系列之(iosfwd)

    本文給大家分享的是小編關(guān)于頭文件系列的(iosfwd)的簡單講解,所謂iosfwd,其實就是“input output stream forward”,下面我們來詳細(xì)看看
    2017-02-02
  • C++實現(xiàn)有向圖的鄰接表表示

    C++實現(xiàn)有向圖的鄰接表表示

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)有向圖的鄰接表表示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C語言基礎(chǔ)知識變量的作用域和存儲方式詳細(xì)介紹

    C語言基礎(chǔ)知識變量的作用域和存儲方式詳細(xì)介紹

    這篇文章主要介紹了C語言基礎(chǔ)知識變量的作用域和存儲方式詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 詳細(xì)聊聊c語言中的緩沖區(qū)問題

    詳細(xì)聊聊c語言中的緩沖區(qū)問題

    緩沖區(qū)又稱為緩存,它是內(nèi)存空間的一部分,也就是說在內(nèi)存空間中預(yù)留了一定的存儲空間,這些存儲空間用來緩沖輸入或輸出的數(shù)據(jù),這部分預(yù)留的空間就叫做緩沖區(qū),這篇文章主要給大家介紹了關(guān)于c語言中緩沖區(qū)問題的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • C語言按關(guān)鍵字搜索文件夾中文件的方法

    C語言按關(guān)鍵字搜索文件夾中文件的方法

    這篇文章主要介紹了C語言按關(guān)鍵字搜索文件夾中文件的方法,涉及C語言文件操作及字符串查找的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C語言之實現(xiàn)輾轉(zhuǎn)相除法的兩種方式

    C語言之實現(xiàn)輾轉(zhuǎn)相除法的兩種方式

    這篇文章主要介紹了C語言之實現(xiàn)輾轉(zhuǎn)相除法的兩種方式,具有很好的參考價值,希望對大家有所幫助,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C++解析obj模型文件方法介紹

    C++解析obj模型文件方法介紹

    由于本人打算使用Assimp來加載模型,這里記錄一下tinyobjloader庫的使用。之前也研究過fbxsdk,除了骨骼動畫暫未讀取外,代碼自認(rèn)為還算可靠
    2022-09-09
  • qt獲取當(dāng)前時間(QDateTime、QTime、QDate)

    qt獲取當(dāng)前時間(QDateTime、QTime、QDate)

    本文主要介紹了qt獲取當(dāng)前時間(QDateTime、QTime、QDate),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C++日志庫log4cplus的使用詳解

    C++日志庫log4cplus的使用詳解

    C++實現(xiàn)的log4cplus日志庫是一種易于使用的C?++日志記錄API,可提供線程安全,靈活且任意粒度的日志管理和配置控制。這篇文章就來和大家講講log4cplus的使用吧
    2023-03-03
  • iOS鎖屏音頻播放控制及音頻信息設(shè)置

    iOS鎖屏音頻播放控制及音頻信息設(shè)置

    這篇文章主要為大家詳細(xì)介紹了iOS鎖屏音頻播放控制及音頻信息設(shè)置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評論

高阳县| 西丰县| 铁岭县| 吉安市| 南澳县| 荥经县| 班戈县| 通州市| 黎城县| 美姑县| 怀远县| 泸州市| 常州市| 武威市| 南昌市| 肇东市| 邮箱| 民乐县| 通山县| 阿巴嘎旗| 湛江市| 察哈| 津市市| 固原市| 平南县| 大港区| 金溪县| 隆昌县| 景东| 海安县| 南安市| 视频| 建昌县| 莱西市| 博白县| 渭源县| 泰和县| 当涂县| 泰兴市| 莒南县| 郴州市|