【C++初階】auto關鍵字

?

目錄

1.auto簡介

2.auto的使用?


1.auto簡介

在早期C/C++中auto的含義是:使用auto修飾的變量,是具有自動存儲器的局部變量,但遺憾的 是一直沒有人去使用它,大家可思考下為什么? C++11中,標準委員會賦予了auto全新的含義即:auto不再是一個存儲類型指示符,而是作為一 個新的類型指示符來指示編譯器,auto聲明的變量必須由編譯器在編譯時期推導而得。

補充:typid(),用于打印變量的類型

編寫如下代碼:

所以結論:auto關鍵字可以自動推導類型。?

引入auto的原因:

隨著程序越來越復雜,程序中用到的類型也越來越復雜,經常體現在:

1.類型難于拼寫

2.含義不明確容易出錯。

如果沒有auto,我們通過一個復雜的類型來定義變量:

vector<string> v;
vector<string>::iterator it = v.begin();

如果使用auto關鍵字:

vector<string> v;
//vector<string>::iterator it = v.begin();
auto it = v.begin();

為什么不使用typedef來實現類型重定義:

首先使用typedef確實可以給類型取別名,也可以簡化代碼。如下:

不使用typedef

std::map<std::string, std::string> m{ { "apple", "蘋果" }, { "orange","橙子" },{"pear","梨"} };

使用后:

typedef std::map<std::string, std::string> Map;
Map m{ { "apple", "蘋果" },{ "orange", "橙子" }, {"pear","梨"} };

但是問題在于:編程時往往需要將表達式的值賦值給變量,要求在聲明變量時清楚的知道表達質的類型。

2.auto的使用?

①使用auto定義變量時必須對其進行初始化,在編譯階段編譯器需要根據初始化表達式來推導auto的實際類型。因此auto并非是一種類型的聲明,而是一個類型聲明時的占位符,編譯器在編譯期間會將auto替換為變量實際的類型。

②auto不可以作為函數的參數。

?原因:如果我能調用這個函數的話,auto這個形參的類型就和我們傳入的參數的類型保持一致,如果我們不調用函數的話,auto就不能匹配類型。

③auto不能做函數返回值

我們調用一個函數,主要關注的就是函數的返回值和參數,如果返回值的類型不確定,那么我們調用這個函數的結果也是不確定的。

④使用auto聲明指針類型的時候,用auto和auto*沒有任何區別

⑤使用auto聲明引用類型時必須加上&

?⑥使用auto在同行聲明多個變量的時候,這些變量必須是相同的類型,否則編譯器會報錯,因為編譯器實際只會對同一個類型進行推導,然后使用推導出來的類型定義其他變量。

⑦auto不能用于聲明數組,這是一個規定?

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

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

相關文章

紅隊項目PinkysPalace格式字符串緩沖區溢出詳解

簡介 滲透測試-地基篇 該篇章目的是重新牢固地基&#xff0c;加強每日訓練操作的筆記&#xff0c;在記錄地基筆記中會有很多跳躍性思維的操作和方式方法&#xff0c;望大家能共同加油學到東西。 請注意&#xff1a; 本文僅用于技術討論與研究&#xff0c;對于所有筆記中復現的…

視頻白平衡沒調好怎么補救 視頻白平衡調整用哪些參數 會聲會影視頻制作教程

沒有調不好的白平衡&#xff01;如果有&#xff0c;那就是你的方法沒用對。無論你的視頻發黃還是發藍&#xff0c;只要掌握本文提供的方法&#xff0c;簡單幾步就能糾正色偏、校準白平衡。操作很簡單&#xff0c;幾乎所有人都能夠輕松掌握。有關視頻白平衡沒調好怎么補救&#…

Android 布局中@NULL的使用和代碼實現方式詳解

文章目錄 1、使用場景2、示例代碼實現2.1、移除背景2.2 、移除文本2.3、移除布局寬度或高度2.4、移除提示文本2.5、移除圖像資源 3、綜合示例3.1、布局文件 activity_main.xml3.2、主活動文件 MainActivity.java3.4、資源文件3.5、運行結果 4、優點5、缺點6、綜合分析6.1、適用…

.net core web項目部署IIS報錯:HTTP 錯誤 413.1 - Request Entity Too Large

HTTP 錯誤 413.1 - Request Entity Too Large 解決辦法 這個報錯的原因是因為IIS配置問題&#xff0c;IIS最大默認配置只有30M&#xff0c;超過30M就會報錯 解決辦法 在程序中配置能接收最大字節大小 //配置請求頭中能最大接收多少數據 //builder.WebHost.UseKestrel(option…

VGG論文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition

VGG論文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition -2015 研究背景 大規模圖像識別的深度卷積神經網絡 VGG&#xff08;牛津大學視覺幾何組&#xff09; 認識數據集&#xff1a;ImageNet的大規模圖像識別挑戰賽 LSVRC-2014&#xff1a;Image…

485通訊的自動流量控制詳細介紹

485通訊的自動流量控制&#xff08;Auto Flow Control&#xff09;是一種簡化流量控制過程的方法&#xff0c;使通信設備能夠自動調整發送速率&#xff0c;以適應接收端的處理能力。它通過內置的算法或硬件特性來實現&#xff0c;不需要額外的硬件控制信號&#xff08;如RTS/CT…

el-table的懶加載樹形結構

el-table樹形模式&#xff0c;懶加載的數據保存在multipleTableRef.value.store.states.lazyTreeNodeMap._rawValue multipleTableRef.value.store.states.lazyTreeNodeMap._rawValue默認值為 {} &#xff0c; 也就是沒有屬性的對象&#xff0c;每展開一個節點&#xff0c;如展…

linux系統——nohup后臺運行程序

nohup可以將正在執行程序以后臺掛起形式執行&#xff0c;也即為執行結果不打印到終端 具體使用可以&#xff0c;nohup待執行的命令&#xff0c;可以將執行命令結果輸出到當前目錄的nohup.out文件內 nohup也有其他用法

Linux-Web服務搭建面試題-2

31. 描述在Linux上設置和維護分布式監控系統&#xff08;如Prometheus和Grafana&#xff09;的過程。 在Linux上設置和維護分布式監控系統&#xff08;如Prometheus和Grafana&#xff09;的過程可以分為以下幾個步驟&#xff1a; 安裝和配置Prometheus&#xff1a; 下載并安裝…

MyCat2之分庫分表

原理 一個數據庫由很多表的構成&#xff0c;每個表對應的不同的業務&#xff0c;垂直切分是指按照業務將表進行分類&#xff0c;分不到不同的數據庫上&#xff0c;這樣壓力就分擔到了不同的庫上面。 數據分片 數據分片包括里&#xff1a;垂直分片和水平分片&#xff0c;垂直分…

安裝依賴報-gyp: No Xcode or CLT version detected!

錯誤 > node-gyp rebuild No receipt for com.apple.pkg.CLTools_Executables found at /. No receipt for com.apple.pkg.DeveloperToolsCLILeo found at /. No receipt for com.apple.pkg.DeveloperToolsCLI found at /. gyp: No Xcode or CLT version detected! gyp ERR!…

【Spark加速】加大hive表在HDFS存的分片文件大小

配置參數&#xff1a; spark.hadoop.hive.exec.orc.default.stripe.size78643200 spark.hadoop.orc.stripe.size78643200 spark.hadoopRDD.targetBytesInPartition78643200 spark.hadoop.hive.exec.dynamic.partition.modenonstrict spark.sql.sources.partitionOverwriteModed…

【wiki知識庫】02.wiki知識庫SpringBoot后端的準備

&#x1f4dd;個人主頁&#xff1a;哈__ 期待您的關注 目錄 一、&#x1f525;今日目標 二、&#x1f4c2;打開SpringBoot項目 2.1 導入所需依賴 2.2修改application.yml配置文件 2.3導入MybatisPlus逆向工程工具 2.4創建一個公用的返回值 2.5創建CopyUtil工具類 2.6創建…

科技與心理學的協同舞蹈

在探討盲人如何利用如“蝙蝠避障”這樣的輔助軟件融入日常生活的同時&#xff0c;我們不得不深入觸及盲人教育心理學的核心&#xff0c;這一領域致力于理解盲人在學習與成長過程中獨特的心理需求與挑戰&#xff0c;以及如何通過教育策略激發他們的潛能&#xff0c;促進全面發展…

前端Vue自定義頂部搜索框:實現熱門搜索與歷史搜索功能

前端Vue自定義頂部搜索框&#xff1a;實現熱門搜索與歷史搜索功能 摘要&#xff1a; 隨著前端開發復雜性的增加&#xff0c;組件化開發成為了提高效率和降低維護成本的有效手段。本文介紹了一個基于Vue的前端自定義頂部搜索框組件&#xff0c;該組件不僅具備基本的搜索功能&am…

powershell腳本批量拉取 git倉庫文件

# 定義基礎URL和數據庫列表 $BASE_URL "http://8.8.11.99:8999/yaya/" $DATABASES "common-service", "bi-system", "erp", "gateway", "pdm", "plm", "public-service", "scm"…

Micro SD封裝是什么?

我們了解客戶對于Micro SD封裝的疑問。在這篇文章中&#xff0c;我們將詳細解釋Micro SD封裝是什么&#xff0c;以及其在存儲領域的技術原理和應用情況&#xff0c;幫助客戶更好地理解這一技術。 1. Micro SD封裝的定義 Micro SD封裝是指一種特定尺寸的存儲芯片封裝方式&#x…

windows 11 23H2更新總是失敗解決過程

頻繁更新失敗的困擾 最近一個月以來 windows 11 系統 23H2 更新總是失敗&#xff0c;更新失敗會撤銷更改: 之后會自動重啟系統&#xff0c;但是重啟進不去系統&#xff0c;屏幕有背光但是不顯示任何內容。 這時候只能長按開機鍵強制關機。每次出現這種情況我都沒辦法遠程連接到…

大規模團隊的數據庫開發,如何用OceanBase工具快速建立企業級賬號體系

前言 為了讓數據庫開發的安全性與可靠性得以充分保障&#xff0c;數據庫開發工具的管控能力顯得尤為關鍵。構建一個健全的賬號體系&#xff0c;能夠協助開發團隊實現對數據庫開發工具的全方位管控&#xff0c;從而有效防范各類數據安全隱患&#xff0c;確保數據庫開發的順利進…

【Python】搭建pypi私倉

1. 下載依賴 pip install pypiserver # 命令安裝 pypiserver 庫 pip install passlib # passlib 包來讀取 Apache htpasswd 文件apt-get install -y apache2-utils2. 生成密碼 使用htpasswd庫在指定路徑/path/to/.pypipasswd生成密碼文件 htpasswd -c /path/to/.pypipasswd …