欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡述C++11就地初始化與列表初始化

 更新時間:2020年08月12日 10:31:27   作者:Dabelv  
這篇文章主要介紹了C++11就地初始化與列表初始化的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)C++,感興趣的朋友可以了解下

1.就地初始化

1.1簡介

在C++11之前,只能對結(jié)構(gòu)體或類的靜態(tài)常量成員進行就地初始化,其他的不行。

class C
{
private:
	static const int a=10;	//yes
	int a=10;					//no
}

在C++11中,結(jié)構(gòu)體或類的數(shù)據(jù)成員在申明時可以直接賦予一個默認值,初始化的方式有兩種,一是使用等號“=”,二是使用大括號列表初始化的方式。注意,使用參考如下代碼:

class C 
{
private: 
 int a=7; 	//C++11 only
 int b{7}; //或int b={7}; C++11 only
 int c(7);	//error
}; 

注意,小括號初始化方式不能應(yīng)用于就地初始化。

1.2就地初始化與初始化列表的先后順序

C++11標(biāo)準支持了就地初始化非靜態(tài)數(shù)據(jù)成員的同時,初始化列表的方式也被保留下來,也就是說既可以使用就地初始化,也可以使用初始化列表來完成數(shù)據(jù)成員的初始化工作。當(dāng)二者同時使用時,并不沖突,初始化列表發(fā)生在就地初始化之后,即最終的初始化結(jié)果以初始化列表為準。參考如下代碼:

#include <iostream>
using namespace std;

class Mem
{
public:
	Mem(int i,int j):m1(i),m2(j) {}

	int m1 = 1;
	int m2 = {2};
};

int main()
{
	Mem mem(11,22);
	cout<<"m1="<< mem.m1<<" m2="<<mem.m2<<endl;
}

程序輸出結(jié)果:

m1=11 m2=22

2.列表初始化

C++11之前主要有以下幾種初始化方式:

//小括號初始化
string str("hello");

//等號初始化
string str="hello";

//POD對象與POD數(shù)組列表初始化
struct Studnet
{
	char* name;
	int age;
};
Studnet s={"dablelv",18}; //純數(shù)據(jù)(Plain of Data,POD)類型對象
Studnet sArr[]={{"dablelv",18},{"tommy",19}}; //POD數(shù)組

//構(gòu)造函數(shù)的初始化列表
class Class
{
	int x;
public:
	Class():x(0){} 
};

這么多的對象初始化方式,不僅增加了學(xué)習(xí)成本,也使得代碼風(fēng)格有較大出入,影響了代碼的可讀性和統(tǒng)一性。從C++11開始,對列表初始化(List Initialization)的功能進行了擴充,可以作用于任何類型對象的初始化,至此,列表初始化方式完成了天下大一統(tǒng)。

class Test
{
 int a;
 int b;
public: 
 C(int i, int j); 
}; 
Test t{0,0};     //C++11 only,相當(dāng)于 Test t(0,0); 
Test* pT=new Test{1,2};  //C++11 only,相當(dāng)于 Test* pT=new Test{1,2};
int* a = new int[3]{1,2,0}; 	//C++11 only

此外,C++11列表初始化還可以應(yīng)用于容器,終于可以擺脫 push_back() 調(diào)用了,C++11中可以直觀地初始化容器:

//C++11 container initializer
vector<string> vs={"first", "second", "third"};
map<string,string> singers ={{"Lady Gaga", "+1 (212) 555-7890"},{"Beyonce Knowles", "+1 (212) 555-0987"}};

因此,可以將C++11提供的列表初始化作為統(tǒng)一的初始化方式,既降低了記憶難度,也提高的代碼的統(tǒng)一度。

以上就是簡述C++11就地初始化與列表初始化的詳細內(nèi)容,更多關(guān)于C++11就地初始化與列表初始化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 利用C語言實現(xiàn)“百馬百擔(dān)”問題方法示例

    利用C語言實現(xiàn)“百馬百擔(dān)”問題方法示例

    百馬百擔(dān)是道經(jīng)典的算法題,下面這篇文章主要給大家介紹了利用C語言實現(xiàn)“百馬百擔(dān)”問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • 基于C++編寫一個文章生成器

    基于C++編寫一個文章生成器

    這篇文章主要為大家介紹一個有趣的小程序,就是利用C++編寫一個文章生成器,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-03-03
  • C++讀寫配置項的基本操作

    C++讀寫配置項的基本操作

    這篇文章主要介紹了C++讀寫配置項的基本操作,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2021-01-01
  • C語言數(shù)據(jù)結(jié)構(gòu)單鏈表接口函數(shù)全面講解教程

    C語言數(shù)據(jù)結(jié)構(gòu)單鏈表接口函數(shù)全面講解教程

    這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)單鏈表所有接口函數(shù)的全面講解教程,有需要朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-10-10
  • C語言實現(xiàn)猜數(shù)字游戲

    C語言實現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C++實現(xiàn)單鏈表的構(gòu)造

    C++實現(xiàn)單鏈表的構(gòu)造

    這篇文章主要為大家詳細介紹了C++實現(xiàn)單鏈表的構(gòu)造,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)循環(huán)順序隊列

    C++數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)循環(huán)順序隊列

    這篇文章主要介紹了 C++數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)循環(huán)順序隊列的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Opencv基于文字檢測去圖片水印的實現(xiàn)示例

    Opencv基于文字檢測去圖片水印的實現(xiàn)示例

    去水印是個麻煩事,本文就來介紹一種方法Opencv基于文字檢測去圖片水印的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 快速解決boost庫鏈接出錯的問題(分享)

    快速解決boost庫鏈接出錯的問題(分享)

    下面小編就為大家?guī)硪黄焖俳鉀Qboost庫鏈接出錯的問題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • C++中TinyXML讀取xml文件用法詳解

    C++中TinyXML讀取xml文件用法詳解

    本文主要介紹了C++中TinyXML讀取xml文件用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評論