c++八股文:c++新特性

文章目錄

    • @[toc]
  • 1.C++11的新特性有哪些
  • 2.智能指針
  • 3.類型推導
  • 4.左值和右值
  • 5.nullptr
  • 6.范圍for循環
  • 7.lambda表達式
  • 參考

1.C++11的新特性有哪些

  1. 語法的改進
    (1)統?的初始化?法
    (2)成員變量默認初始化
    (3)auto關鍵字: 允許編譯器?動推斷變量的類型,減少類型聲明的冗余。
    (4)decltype 求表達式的類型
    (5)智能指針 std::shared_ptr 和 std::unique_ptr
    (6)空指針 nullptr: 提供了明確表示空指針的關鍵字,替代了傳統的 NULL 。
    (7)基于范圍的for循環: 簡化遍歷容器元素的語法
    (8)右值引?和move語義 引?右值引?和移動構造函數,允許?效地將資源從?個對象移動到另?個對
    象,提?性能。
  2. 標準庫擴充(往STL?新加進?些模板類)
    (9)?序容器(哈希表) ?法和功能同map?模?樣,區別在于哈希表的效率更?
    (10)正則表達式 可以認為正則表達式實質上是?個字符串,該字符串描述了?種特定模式的字符串
    (11)Lambda表達式: 允許在代碼中定義匿名函數

2.智能指針

3.類型推導

  1. auto:auto可以讓編譯器在編譯期就推導出變量的類型
    • auto的使?必須?上初始化,否則?法推導出類型
    • auto在??定義多個變量時,各個變量的推導不能產??義性,否則編譯失敗
    • auto不能?作函數參數
    • 在類中auto不能?作?靜態成員變量
    • auto不能定義數組,可以定義指針
    • auto?法推導出模板參數
    • 在不聲明為引?或指針時,auto會忽略等號右邊的引?類型和cv限定
    • 在聲明為引?或者指針時,auto會保留等號右邊的引?和cv屬性
  2. decltype:decltype則?于推導表達式類型,這?只?于編譯器分析表達式的類型,表達式實際不會進?運算。
    • exp是表達式,decltype(exp)和exp類型相同
    • exp是函數調?,decltype(exp)和函數返回值類型相同
    • 其它情況,若exp是左值,decltype(exp)是exp類型的左值引?

4.左值和右值

  • 左值:指表達式結束后依然存在的持久對象。可以取地址,可以通過內置(不包含重載) & 來獲取地址,我們可以將一個右值賦給左值。
  • 右值:表達式結束就不再存在的臨時對象。不可取地址,不可以通過內置(不包含重載) & 來獲取地址。由于右值不可取地址,因此我們不能將任何值賦給右值。
  • 使用 = 進行賦值時,= 的左邊必須為左值,右值只能出現在 = 的右邊。
// x 是左值,666 為右值
int x = 666;   // ok 
int *y = x; // ok
int *z = &666 // error
666 = x; // error
int a = 9; // a 為左值
int b = 4; // b 為左值
int c = a + b // c 為左值 , a + b 為右值
a + b = 42; // error

5.nullptr

  • C++11引?nullptr關鍵字來區分空指針和0。nullptr 的類型為 nullptr_t,能夠轉換為任何指針或成員指針的類型,也可以進?相等或不等的?較。
  • NULL:預處理變量,是一個宏,它的值是 0,定義在頭文件 中,即 #define NULL 0。
  • nullptr:C++ 11 中的關鍵字,是一種特殊類型的字面值,可以被轉換成任意其他類型。

6.范圍for循環

for(變量:對象)

std::vector<int> arr(5, 100);
for (std::vector<int>::iterator i = arr.begin(); i != arr.end(); i ++) {std::cout << *i << std::endl;
}
// 范圍for循環
for (auto &i : arr) {std::cout << i << std::endl;
}

7.lambda表達式

lambda表達式表示?個可調?的代碼單元,沒有命名的內聯函數,不需要函數名因為我們直接(?次性的)?它,不需要其他地?調?它。
  • lambda表達式語法:
[capture list] (parameter list) -> return type {function body }
// [捕獲列表] (參數列表) -> 返回類型 {函數體 }
// 只有 [capture list] 捕獲列表和 {function body } 函數體是必選的
auto lam =[]() -> int { cout << "Hello, World!"; return 88; };
auto ret = lam(); 
cout<<ret<<endl; // 輸出88
  • lambda 表達式的特點:

    • 變量捕獲才是成就lambda卓越的秘?
      • [] 不捕獲任何變量,這種情況下lambda表達式內部不能訪問外部的變量
      • [&] 以引??式捕獲所有變量(保證lambda執?時變量存在)
      • [=] ?值的?式捕獲所有變量(創建時拷?,修改對lambda內對象?影響)
      • [=, &foo] 以引?捕獲變倆個foo, 但其余變量都靠值捕獲
      • [&, foo] 以值捕獲foo, 但其余變量都靠引?捕獲
      • [bar] 以值?式捕獲bar; 不捕獲其它變量
      • [this] 捕獲所在類的this指針
  • lambda最?的?個優勢是在使?STL中的算法(algorithms)庫

參考

Leetcodec++面試突破

代碼隨想錄–最強八股文c++

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719184.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719184.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719184.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mybatis中#{}和${}的區別?

#{}是占位符&#xff0c;預編譯處理&#xff1b;${}是拼接符&#xff0c;字符串替換&#xff0c;沒有預編譯處理。 Mybatis在處理#{}時&#xff0c;#{}傳入參數是以字符串傳入&#xff0c;會將SQL中的#{}替換為?號&#xff0c;調用PreparedStatement的set方法來賦值。 Mybat…

DCTNet

DCTNet http://giantpandacv.com/academic/%E7%AE%97%E6%B3%95%E7%A7%91%E6%99%AE/%E9%A2%91%E5%9F%9F%E4%B8%AD%E7%9A%84CNN/CVPR%202020%20%E5%9C%A8%E9%A2%91%E5%9F%9F%E4%B8%AD%E5%AD%A6%E4%B9%A0%E7%9A%84DCTNet/ 一個對輸入圖像進行頻域轉換和選擇的方法&#xff0c;達到…

python實現手機號歸屬地查詢

手機上突然收到了某銀行的短信提示&#xff0c;看了一下手機的位數&#xff0c;正好是11位。我一想&#xff0c;這不就是標準的手機號碼嗎&#xff1f;于是一個想法涌上心頭——用python的庫實現查詢手機號碼歸屬地查詢自由。 那實現的效果如下&#xff1a; 注&#xff1a;電…

達夢數據庫基礎操作(一):用戶操作

達夢數據庫基礎操作(一)&#xff1a;用戶操作 1 達夢運行狀態 SELECT banner as 版本信息 FROM v$version;1.2 達夢版本號 SELECT banner as 版本信息 FROM v$version;1.3 用戶相關操作 默認用戶名密碼&#xff1a;SYSDBA/SYSDBA 注意&#xff1a;在哪個數據庫下創建的用戶…

2.3_3 進程互斥的硬件實現方法

文章目錄 2.3_3 進程互斥的硬件實現方法&#xff08;一&#xff09;中斷屏蔽方法&#xff08;二&#xff09;TestAndSet指令&#xff08;三&#xff09;Swap指令 總結&#xff08;四&#xff09;互斥鎖 2.3_3 進程互斥的硬件實現方法 學習提示&#xff1a; 1.理解各方法的原理 …

寶塔Linux面板遷移網站數據的詳細步驟是什么?

寶塔Linux面板遷移網站數據的詳細步驟是什么&#xff1f; 準備工作&#xff1a;確保寶塔面板處于最新版本并與服務器環境一致。如果需要遷移到其他機器&#xff0c;需要將遷入服務器的寶塔面板信息和API秘鑰填寫好。秘鑰的有效期為7天&#xff0c;建議在使用后手動關閉接口以保…

Python從0到100(二):Python語言介紹及第一個Pyhon程序

前言&#xff1a; 零基礎學Python&#xff1a;Python從0到100最新最全教程。 想做這件事情很久了&#xff0c;這次我更新了自己所寫過的所有博客&#xff0c;匯集成了Python從0到100&#xff0c;共一百節課&#xff0c;幫助大家一個月時間里從零基礎到學習Python基礎語法、Pyth…

springcloud:3.3測試重試機制

服務提供者【test-provider8001】 Openfeign遠程調用服務提供者搭建 文章地址http://t.csdnimg.cn/06iz8 相關接口 測試遠程調用&#xff1a;http://localhost:8001/payment/index 服務消費者【test-consumer-resilience4j8004】 Openfeign遠程調用消費者搭建 文章地址http:/…

Vue 3 中如何使用全局 API?

Vue 3 中的全局 API 使用詳解 Vue 3 相較于 Vue 2 在全局 API 的使用上有了較大的變化。Vue 3 引入了新的全局 API 創建方式&#xff0c;并通過 createApp 方法替代了 Vue 2 中的 new Vue()。這種變化使得 Vue 3 在全局 API 的使用上更加靈活&#xff0c;也更好地支持了 tree-…

UNIapp實現局域網內在線升級

首先是UNIapp 生成apk 用Hbuilder 進行打包 可以從網站https://www.yunedit.com/reg?gotocert 使用自有證書&#xff0c;目測比直接使用云證書要快一些。 發布apk 網站 用IIS發布即可 注意事項中記錄如下內容 第一、需要在 iis 的MiMe 中添加apk 的格式&#xff0c;否則無法…

如何本地創建websocket服務端并發布到公網實現遠程訪問

文章目錄 1. Java 服務端demo環境2. 在pom文件引入第三包封裝的netty框架maven坐標3. 創建服務端,以接口模式調用,方便外部調用4. 啟動服務,出現以下信息表示啟動成功,暴露端口默認99995. 創建隧道映射內網端口6. 查看狀態->在線隧道,復制所創建隧道的公網地址加端口號7. 以…

如何實現飛書與金蝶無縫對接,提升業務效率與客戶滿意度?

一、客戶介紹 某貿易有限公司是一家專業從事進口葡萄酒和高端烈酒銷售的企業。在市場競爭日益激烈的今天&#xff0c;該公司始終堅持以客戶為中心&#xff0c;以市場為導向&#xff0c;不斷創新和進步。公司不僅注重傳統銷售渠道的拓展&#xff0c;還積極擁抱互聯網&#xff0…

processing繪制笑臉

笑臉效果圖&#xff1a; processing代碼&#xff1a; void setup(){size(1000,1000);//Canvas sizebackground(#ffcc33);//Canvas background color } void draw(){ strokeWeight(12);//face-width12px fill(#ffffcc);//face arc(500,500,200,200,0,TWO_PI);//face-size strok…

Python中的自然語言處理和文本挖掘

在Python中&#xff0c;自然語言處理&#xff08;NLP&#xff09;和文本挖掘通常涉及對文本數據進行清洗、轉換、分析和提取有用信息的過程。Python有許多庫和工具可以幫助我們完成這些任務&#xff0c;其中最常用的包括nltk&#xff08;自然語言處理工具包&#xff09;、spaCy…

統計C語言代碼行數的pyton代碼

首先是白嫖以下大神的代碼&#xff1a;統計python代碼行數小工具_linecount工具-CSDN博客 然后&#xff0c;讓ChatGPT幫我改為如下的完整代碼&#xff1a; import os from tkinter import Tk, Label, Button, filedialog def open_file(file_path, encoding): try: file op…

【推薦算法系列十八】:DSSM 召回算法

參考 推薦系統中 DSSM 雙塔模型匯總&#xff08;二更&#xff09; DSSM 和 YouTubeDNN 都是比較經典的 U2I 模型。 U2I 召回 U2I 召回也就是 User-to-Item 召回&#xff0c;它基于用戶的歷史行為以及用戶的一些個人信息&#xff0c;對系統中的候選物品進行篩選&#xff0c;挑…

備考2024年上海高考數學:歷年選擇題真題練一練(2014~2023)

今天距離2024年高考還有三個多月的時間&#xff0c;今天我們來看一下2014~2023年的上海高考數學的選擇題&#xff0c;從過去十年的真題中隨機抽取5道題&#xff0c;并且提供解析。 后附六分成長獨家制作的在線練習集&#xff0c;科學、高效地反復刷這些真題&#xff0c;吃透真題…

Dockerfile執行的時候沒有執行CMD

參考&#xff1a;https://blog.csdn.net/Zx13170918986/article/details/130831052 在dockerfile中編寫CMD后&#xff0c;發現如果執行docker run -itd這樣的指令&#xff0c;是沒法啟動CMD腳本的&#xff0c;例如以下的dockerfile FROM node:16 WORKDIR /home/ COPY start_…

Sora爆火,數字人IP如何借助AIGC視頻生成軟件制作短視頻營銷?

ChatGPT、Sora等大模型的出現&#xff0c;創新了短視頻內容創作生產方式。但目前Sora模型無法準確模擬復雜場景的物理特性&#xff0c;并且可能無法理解因果關系導致視頻失真。 廣州虛擬動力基于用戶使用需求&#xff0c;推出了AIGC數字人視頻生成平臺&#xff0c;企業、品牌可…

c++基礎學習第三天(指針,結構體)

c基礎學習第三天&#xff08;指針&#xff0c;結構體&#xff09; 文章目錄 1、指針1.1、指針的基本概念1.2、指針變量的定義和使用1.3、 指針所占內存空間1.4、空指針和野指針1.5、 const修飾指針1.5.1、const修飾指針-常量指針1.5.2、const修飾常量-指針常量1.5.3、const即修…