C++ 花括號(hào){}初始化小結(jié)
在C++11及以后的版本中,花括號(hào){}語法在不同語境下有不同的用法,下面總結(jié)使用{}的常見場景:
1 列表初始化
List Initialization
{}可以使用列表初始化的方式初始化對(duì)象,包括內(nèi)置類型,數(shù)組,容器等。如:
int x = {5}; // x被初始化為5 std::vector<int> v = {1, 2, 3}; // 用三個(gè)元素初始化一個(gè)數(shù)組 int arr[] = {1, 2, 3}; // 用三個(gè)元素初始化一個(gè)數(shù)組
列表初始化確保初始化是充分定義的。
2 值初始化
Value Initialization
在某些情況下,{}會(huì)用零或者默認(rèn)值來初始化一個(gè)對(duì)象,如:
int x{}; // x被初始化為0 double d{}; // x被初始化為0
對(duì)于沒有初始化構(gòu)造函數(shù)的對(duì)象,可以使用值初始化的方式。
3 空初始化
Empty Initialization
在某些情況下,{}會(huì)將對(duì)象初始化為空,如:
std::string s{}; // 初始化一個(gè)空字符串 std::vector<int> v{}; // 初始化一個(gè)空容器 char arr[10]{}; //初始化一個(gè)空數(shù)組
4 指針的空初始化
Empty Initialization of Pointers
{}可以將指針初始化為nullptr,表示其暫時(shí)不指向任何對(duì)象。
int* ptr{}; // 將指針初始化為nullptr std::shared_ptr<int> sp{}; // 將共享指針初始化為nullptr
花括號(hào)實(shí)際上是通過initializer_list的方式來實(shí)現(xiàn)
vector (initializer_list<value_type> il, const allocator_type& alloc = allocator_type()); //vector使用initializer_list進(jìn)行初始化
C++11中提供了initializer_list類(初始值列表,定義在initializer_list頭文件中),用于處理參數(shù)類型相同但是數(shù)量可變的情況
initializer_list<T> lst; // 默認(rèn)初始化,元素列表為空 initializer_list<T> lst{a, b,c...}; // lst的元素為對(duì)應(yīng)初始值的副本,列表中元素均為const,不能修改
lst2(lst) 拷貝操作,不會(huì)拷貝列表中的元素
lst2 = lst 賦值操作,不會(huì)拷貝列表中的元素
lst.size() 返回列表的大小
lst.begin() 返回指向lst中首元素的指針
lst.end() 返回指向lst中尾元素下一個(gè)位置的指針
初始值列表并沒有提供可以增刪元素的操作,所以只能可以通過花括號(hào)的方式構(gòu)造initializer_list對(duì)象,然后作為參數(shù)傳入,使用時(shí)通過迭代器進(jìn)行遍歷。
到此這篇關(guān)于C++ 花括號(hào){}初始化小結(jié)的文章就介紹到這了,更多相關(guān)C++ 花括號(hào)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++11中std::declval的實(shí)現(xiàn)機(jī)制淺析
這篇文章主要給大家介紹了關(guān)于C++11中std::declval實(shí)現(xiàn)機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-07-07基于Matlab實(shí)現(xiàn)鯨魚優(yōu)化算法的示例代碼
鯨魚優(yōu)化算法(WOA)是澳大利亞學(xué)者M(jìn)irjaili等于2016年提出的群體智能優(yōu)化算法,根據(jù)座頭鯨的捕獵行為實(shí)現(xiàn)優(yōu)化搜索的目的。本文將利用Matlab實(shí)現(xiàn)這一算法,需要的可以參考一下2022-04-04C/C++中運(yùn)算符的優(yōu)先級(jí)、運(yùn)算符的結(jié)合性詳解
這篇文章主要介紹了C/C++中運(yùn)算符的優(yōu)先級(jí)、運(yùn)算符的結(jié)合性詳解的相關(guān)資料,需要的朋友可以參考下2017-02-02C++實(shí)現(xiàn)惡搞電腦關(guān)機(jī)小程序的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個(gè)簡單的惡搞電腦關(guān)機(jī)小程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-11-11C++簡單實(shí)現(xiàn)RPC網(wǎng)絡(luò)通訊的示例詳解
RPC是遠(yuǎn)程調(diào)用系統(tǒng)簡稱,它允許程序調(diào)用運(yùn)行在另一臺(tái)計(jì)算機(jī)上的過程,就像調(diào)用本地的過程一樣。本文將用C++簡單實(shí)現(xiàn)RPC網(wǎng)絡(luò)通訊,感興趣的可以了解一下2023-04-04C語言實(shí)現(xiàn)簡單員工工資管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單員工工資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03