C++的const限定符

const限定符總是讓人很頭疼,下面講解一下幾個比較容易混淆的概念:

  1. 對常量的引用(常量引用):
    一般情況下,引用的類型要與其所引用的對象的類型一致,其中的例外情況就是,當初始化常量引用時,允許用任意表達式作為初始值,只要改表達式能轉換成引用的類型即可。
const int i = 1;
const int &ri = i;
int i = 42;
const int &r1 = i;
const int &r2 = 42;
  1. 指向常量的指針
    和引用類似,一般情況下,指針的類型應該與其指向的對象的類型一致,但是允許一個指向常量的指針指向一個非常量對象。
const int i = 4;
const int *cptr = &i;
int a = 1;
cptr = &a;
  1. 常量指針
    由于指針本身就是一個對象,因此可以定義一個指針為常量指針,必須被初始化。當常量指針指向一個對象時,那么這個指針永遠只能指向這個對象,但是被指向的對象的值能否改變,取決于被指向的對象本身是否是一個常量。
int i = 1;
int *const cp = &i;//cp永遠指向i,
i = 2;//由于i是非常量,其值可以改變
const int c = 2;
const int *const p = &c;//p是一個指向常量的常量指針
c = 1;//錯誤,c為常量,其值不能被改變
p = &i;//錯誤,p是一個常量的指針,其指向不能改變
  1. 頂層const與底層const
    頂層const表示指針本身就是一個常量,而底層const表示指針所指的對象是一個常量。
int i = 0;
int *const pi = &i;//pi的值不能被改變,pi為頂層const
const int ci = 42;//ci是一個int類型的常量,值不能被改變,為頂層const
const int *p2 = &ci;//p2是一個指向常量的指針,p2的值可以改變,所以p2為底層const
const int *const p3 = p2;//靠右的const是頂層const,靠左的const是底層const
const int &r = ci;//用于聲明引用的const都是底層const

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

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

相關文章

Linux學習:第五章-Linux用戶和用戶組管理

一用戶管理命令用戶信息文件:/etc/passwd aa:x:501:501::/home/aa:/bin/bash 第一列:用戶名 第二列:密碼標志 第三列:UID用戶ID 0管理員 1-499系統用戶(偽用戶) 500普通用戶 第四列:GID初始組ID…

一點等于多少厘米_馬桶知識介紹,你了解馬桶多少

我們可能并不了解我們經常運用的馬桶,認為馬桶便是簡簡單單的規劃,沒什么技術含量。其實不然,馬桶的規劃也包含了不少物理學原理。假如你家里的馬桶出現毛病,首先要排查毛病的原因,但是假如不了解馬桶結構圖那就很難把…

動態內存分配與智能指針

內存分配: 靜態存儲區: 局部static對象類的static數據成員定義在任何函數之外的變量 棧區: 函數內的非static對象 動態內存分配的方式有: new和delete智能指針(shared_ptr、unique_ptr、weak_ptr)all…

1151壓力變送器型號_日本進口橫河EJA530E壓力變送器型號解讀!

橫河EJA變送器對大家來說也許不陌生,但是對于EJA變送器的型號很多人還不是很懂,因為一個全型號代表這很多參數,每一個字母和每一個數字背后都是一個準確的參數,我們在選型的時候要提供必要的參數,更具參數選出合適的型…

plc控制可調節閥流程圖_PLC控制的水箱液位控制系統畢業論文

內容介紹原文檔由會員 莎士比亞 發布論文標準WORD格式排版40頁摘要在人們生活以及工業生產等諸多領域經常涉及到液位和流量的控制問題, 例如居民生活用水的供應, 飲料、食品加工, 溶液過濾, 化工生產等多種行業的生產加工過程, 通常需要使用蓄液池, 蓄液池中的液位需要維持合適…

idea繼承后重新方法快捷鍵_idea 查看類繼承關系的快捷鍵

類似eclipse ctrlt的快捷鍵,idea中是ctrlH…找到對應的類 查看類關系圖…1.在想要查看的類上按 Ctrl H -> Diagrams -> Show Diagrams -> Java Class Diagrams -> Show Implementations -> Ctrl A -> 右擊一下 -> Enter .…打開想要查看的接口或者類文件…

怎樣在數組末尾添加數據_如何利用C++實現可變長的數組?

應該執行什么功能?假設我們要實現一個將自動擴展的數組類,是否需要實現函數?讓我們從下面主要功能使用的功能開始,看看我們需要實現哪些功能。輸出結果:0 1 2 3 40 1 2 100 4您需要做什么才能實現上述功能?…

Linux學習:第六章-Linux服務和進程管理

一進程查看 1psaux查看當前系統所有運行的進程 -a顯示前臺所有進程 -u顯示用戶名 -x顯示后臺進程 user: 用戶名 pid:進程id。PID1init系統啟動的第一個進程 %CPUcpu占用百分比 %MEM內存占用百分比 VSZ虛擬內存占用量KB RSS固定內存占有量 tty登錄終端tty…

覆蓋索引與聯合索引_淺析MySQL的索引覆蓋和索引下推

寫在前面在MySQL數據庫中,索引對查詢的速度有著至關重要的影響,理解索引也是進行數據庫性能調優的起點,索引就是為了提高數據查詢的效率。今天我們來聊聊在MySQL索引優化中兩種常見的方式,索引覆蓋和索引下推索引覆蓋要了解索引覆…

python3 輸入輸出_Python3基礎之輸入和輸出實例分析

通常來說,一個Python程序可以從鍵盤讀取輸入,也可以從文件讀取輸入;而程序的結果可以輸出到屏幕上,也可以保存到文件中便于以后使用。本文就來介紹Python中最基本的I/O函數。一、控制臺I/O1.讀取鍵盤輸入內置函數input([prompt])&…

redis 哨兵 異步_突破Java面試(23-8) - Redis哨兵主備切換的數據丟失問題-阿里云開發者社區...

1 數據丟失的兩個場景主備切換的過程,可能會導致數據丟失1.1 異步復制由于 master > slave的復制是異步的,所以可能有部分數據還沒復制到slave,master就宕機,于是這些數據就丟失了1.2 腦裂導致腦裂,也就是說&#x…

vue 斷開正在發送的請求_vue 發送請求頻繁時取消上一次請求

前言:在項目中經常有一些場景會連續發送多個請求,而異步會導致最后得到展示的結果可能不是最后一次發送請求返回的結果,且對性能也有非常大的影響。場景:列表式切換商品,有時候上一次請求的結果非常慢,而我…

Linux學習:第六章-Linux網絡配置

上一章的補充: 常見網絡端口: 2021ftp服務文件共享 22ssh服務安全遠程網絡管理 23telnet服務 25smtp:簡單郵件傳輸協議發信 110pop3:郵局協議收信 80www網頁服務 3306mysql端口 3389windows終端服務 53DNS端口 /etc/services所有系…

sequelize 增加數據庫字段_Node項目使用Sequelize操作數據庫(一)(包括模型,增,刪、改等)...

Sequelize 是一個基于 Promise 的 Node.js ORM,目前支持 Postgres、MySQL、SQLite 和 Microsoft SQL Server。它具有強大的事務支持,關聯關系、讀取和復制等功能。所謂ORM是指對象關系映射,通過使用描述對象和數據庫之間映射的元數據&#xf…

django orm插入一條_如何通過django的ORM遠程發布文章?

利用django的ORM可以方便的給數據庫插入文章但是假如我django放在阿里云,那我想在本地寫個插件,每天很方便的插入一些數據,最好是通過ORM的,因為管理起來比較方便,會涉及到多個站,可能會有200多個站&#x…

循環斐波那契數列_第五課:斐波那契數列(第一課時)

簡介:又稱黃金分割數列、因數學家列昂納多斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34……在數學上,斐波那契數列以如下被以遞推的方法定義:F(…

命令行 藍牙_Ubuntu使用BlueZ驅動藍牙dongle

藍牙dongle即藍牙適配器,一般為USB接口,通過USB連接到PC等設備。連接dongle后,PC即可使用驅動程序控制dongle連接其它藍牙設備。本文主要介紹在Ubuntu系統中安裝BlueZ的方法及藍牙的使用。01獲取BlueZBlueZ是Linux系統的官方藍牙協議棧&#…

Java在Windows下導出xml文件到Linux服務器上

最近由于公司項目需要,學習了在Windows平臺導出xml文件到Linux服務器上的指定目錄下的方法,(注:這里的我的Linux是在本機上裝的虛擬機)現在寫下來記錄一下! 1.首先是項目截圖: 2.主要是類&…

java peek函數_Java 8 Stream Api 中的 peek 操作

1. 前言我在 Java 8 Stream API中的 map 和flatMap 中講述了Java8 Stream API中 map 操作和 flatMap 操作的區別。然后有小伙伴告訴我 peek 操作 也能實現元素的處理。但是你知道 map 和 peek 的區別嗎? map 我們在開頭文章已經講過了,你可以去詳細了解一…

iphone如何查看dns延遲_iPhone手機網速慢?1分鐘教你設置DNS,網速立馬翻一番

很多小伙伴在購機時選擇蘋果手機都是因為iOS系統的流暢度和精簡性,但iPhone在可玩性和信號方面是不如安卓手機的。大家在使用過程中一定遇到過這樣的情況,連接同一個無線網,但是蘋果的網速總是要比安卓慢,這該怎么辦呢&#xff1f…