c++程序員面試過(guò)程中基本上都會(huì)被問(wèn)到c++11新特性吧,你是怎么回答的呢? 本文基本上涵蓋了c++11的所有新特性,并有詳細(xì)代碼介紹其用法,對(duì)關(guān)鍵知識(shí)點(diǎn)做了深入分析,對(duì)重要的知識(shí)點(diǎn)我單獨(dú)寫(xiě)了相關(guān)文章并附上了相關(guān)鏈接,我整理了完備的c++新特性腦圖(由于圖
很多人談到c++,說(shuō)它特別難,可能有一部分就是因?yàn)閏++的內(nèi)存管理吧,不像java那樣有虛擬機(jī)動(dòng)態(tài)的管理內(nèi)存,在程序運(yùn)行過(guò)程中可能就會(huì)出現(xiàn)內(nèi)存泄漏,然而這種問(wèn)題其實(shí)都可以通過(guò)c++11引入的智能指針來(lái)解決,相反我還認(rèn)為這種內(nèi)存管理還是c++語(yǔ)言的優(yōu)勢(shì),因?yàn)楸M
c++11關(guān)于并發(fā)引入了好多好東西,這里按照如下順序介紹: std::thread相關(guān) std::mutex相關(guān) std::lock相關(guān) std::atomic相關(guān) std::call_once相關(guān) volatile相關(guān) std::condition_variable相關(guān) std::future相關(guān) async相關(guān) std::thread相關(guān) c++11之前你可能使用pthr
以前,在lambda表達(dá)式?jīng)]有進(jìn)入標(biāo)準(zhǔn)的時(shí)候,對(duì)容器的遍歷等涉及到使用函數(shù)指針的情況,一般人會(huì)懶得使用std::for_each,或std::transform,也許只是一個(gè)短短的幾句話,卻要單獨(dú)寫(xiě)個(gè)
C++11終于知道要在語(yǔ)言中加入匿名函數(shù)了。匿名函數(shù)在很多時(shí)候可以為編碼提供便利,這在下文會(huì)提到。很多語(yǔ)言中的匿名函數(shù),如C++,都是用Lambda表達(dá)式實(shí)現(xiàn)的。Lambda表達(dá)式又稱為lambda函
emplace操作是C++11新特性,新引入的的三個(gè)成員emlace_front、empace 和 emplace_back,這些操作構(gòu)造而不是拷貝元素到容器中,這些操作分別對(duì)應(yīng)push_front、
const引用在C++語(yǔ)言中,引用是作為一種高效,安全的傳遞數(shù)據(jù)的方式而存在的。除了一般的引用類型,還可以聲明const引用。我們有以下一個(gè)Image類。class?Image { public: ?
讓我們從std::make_unique和std::make_shared之間的比較開(kāi)始講起吧。std::make_shared是C++11的一部分,可惜的是,std::make_unique不是,它
為什么需要?jiǎng)e名下面的說(shuō)明只是一個(gè)例子,實(shí)際的使用場(chǎng)景一定不止這些。假設(shè)有一個(gè)二維圖形計(jì)算的程序,定義了一個(gè)point結(jié)構(gòu)體。struct?point{???int?x;???int?y;};在有些系統(tǒng)
熟悉C++98/03的對(duì)于for循環(huán)就再了解不過(guò)了,如果我們要遍歷一個(gè)數(shù)組,那么在C++98/03中的實(shí)現(xiàn)方式:int?arr[10]?=?{?1,?2,?3,?4,?5,?6,?7,?8,?9,?1
C++11的一大亮點(diǎn)就是引入了Lambda表達(dá)式。利用Lambda表達(dá)式,可以方便的定義和創(chuàng)建匿名函數(shù)。對(duì)于C++這門語(yǔ)言來(lái)說(shuō)來(lái)說(shuō),“Lambda表達(dá)式”或“匿名函數(shù)”這些概念聽(tīng)起來(lái)好像很深?yuàn)W,但很多
C++11有一些這樣的改善,這種改善保證寫(xiě)出的代碼比以往任何時(shí)候的執(zhí)行效率都要好。這種改善之一就是生成常量表達(dá)式,允許程序利用編譯時(shí)的計(jì)算能力。假如你熟悉模板元編程,你將發(fā)現(xiàn)constexpr使這一切
C++11的模板類型判斷——std::is_same和std::decay問(wèn)題提出:有一個(gè)模板函數(shù),函數(shù)在處理int型和double型時(shí)需要進(jìn)行特殊的處理,那么怎么在編譯期知道傳入的參數(shù)的數(shù)據(jù)類型是i
我最不喜歡循規(guī)循矩,雖然是讓寫(xiě)筆記,照著老師的ppt抄一遍有什么意思。所以我還是喜歡寫(xiě)自己的東西。最近我有個(gè)怪癖,愛(ài)把所有帶指針的類都改造成使用智能指針來(lái)控制資源分配和回收。因?yàn)槲艺J(rèn)為既然是c++11
用C++11綁定信號(hào)和槽,能使代碼可讀性更高,靈活性更強(qiáng) 注:connect()中可聲明連接類型,默認(rèn)缺省為AutoConnection 點(diǎn)擊滾動(dòng)到 “連接類型” 介紹↓ :#include#incl
溫故而知新迄今為止的職業(yè)生涯中,有過(guò)兩次集中時(shí)間學(xué)習(xí)C++的經(jīng)歷。第一次大概是在1994年前后,那時(shí)非計(jì)算機(jī)專業(yè)大學(xué)畢業(yè)剛接觸C++,學(xué)的是還是BorlandC++3.1的手冊(cè)。許多東西都是一知半解就
在我們實(shí)際編程中,我們經(jīng)常會(huì)碰到變量初始化的問(wèn)題,對(duì)于不同的變量初始化的手段多種多樣,比如說(shuō)對(duì)于一個(gè)數(shù)組我們可以使用 int arr[] = {1,2,3}的方式初始化,又比如對(duì)于一個(gè)簡(jiǎn)單的結(jié)構(gòu)體:[
在使用Qt的樹(shù)形視圖和表格視圖QTableView和QTreeView時(shí),經(jīng)常需要遍歷所有條目,每種功能都寫(xiě)一個(gè)遍歷函數(shù)既麻煩又不符合編程最簡(jiǎn)原則,因此,寫(xiě)一個(gè)通用的遍歷函數(shù)是很必要的(類似于std:
一.std::bindbind是這樣一種機(jī)制,它可以將參數(shù)綁定于可調(diào)用對(duì)象,產(chǎn)生一個(gè)新的可調(diào)用實(shí)體,這種機(jī)制在函數(shù)回調(diào)時(shí)頗為有用。C++98中,有兩個(gè)函數(shù)bind1st和bind2nd,它們分別用來(lái)綁
C++11系列-改進(jìn)的類型推導(dǎo):auto、decltype和新的函數(shù)語(yǔ)法C++11引入了一些新的實(shí)用的類型推導(dǎo)能力,這意味著你可以花費(fèi)更少的時(shí)間去寫(xiě)那些編譯器已經(jīng)知道的東西。當(dāng)然有些時(shí)候你需要幫助編譯