欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中的const限定符的使用和作用

 更新時間:2023年05月08日 09:11:17   作者:iukam  
C++ 中的 const 限定符用于聲明不可變量,即在變量聲明時指定該變量的值不可修改。它的使用可以幫助程序員避免一些常見的編程錯誤,如誤修改不應該被修改的變量的值等

const滿足定義一種變量在被設置初始值后它的值不能再次被改變。

在默認狀態(tài)下,const對象僅在文件內有效。

如果需要在不同文件下共享需要添加關鍵字extern,這樣只需要定義一次就夠了。

extern const int bufSize;

1、const 的引用

把引用綁定到const上,和其他對象使用一樣,最大的區(qū)別在于對常量的引用不能被用作他所修改的綁定對象:

const int ci=1024;
const int &rl=ci;//正確:引用及其對應的對象都是常量
rl=42;//錯誤:rl是對常量的引用
int &r2=ci;//錯誤:試圖讓一個非常量引用指向一個常量對象

ci不允許賦值,當然也不可能通過引用去改變ci;

初始化和對const的引用

引用類型必須與其所引用對象的類型一直,但是有兩個例外:

1)一個是初始化常量引用時允許任意表達式作為初始值,只要該表達式的結果能轉化成引用的類型即可。

int i=42;
const int &rl=i;//正確:允許將const int&綁定到一個普通int對象上
const int &r2=42;//正確:r2是一個常量引用
const int &r3=rl*2;//正確:r3是一個常量引用
int &r4=rl*2;//錯誤:r4是一個普通非常量引用

對const的引用可能引用一個并非const對象

int i=42;
int &rl=i;//引用r1綁定到一個i對象上
const int &r2=i;//r2也綁定對象i,但不允許通過r2修改i值
r1=0;//r1并非常量,i的值修改為0
r2=0;//錯誤:r2是一個常量引用

2、指針和const

  • 與引用一樣,也可以令指針指向常量或非常量。
  • 類似與常量引用,指向常量的指針不能用于改變其所指對象的值。
  • 和常量引用一樣,指向常量的指針也沒有規(guī)定其所指的對象必須是一個常量。

所以,要想存放常量對象的地址,只能使用指向常量的指針:

const double pi=3.14;// pi是個常量,它的值不能改變
double *ptr=π//錯誤:ptr是一個普通指針
const double *cptr=π//正確:cptr可以指向一個雙精度常量
*cptr=42;//錯誤:不能給*cptr 賦值

指針的類型必須與其所指對象類型一致,但是有兩個例外:

1、允許令一個指向常量的指針指向一個非常量對象;

double dval=3.14;
cptr=&dval;//正確:但是不能通過cptr改變dval的值

const 指針

常量指針必須初始化,而且一旦初始化完成,則它的值(也就是存放在指針中的那個地址)就不能在改變了。

指針是一個常量時,可以通過指針修改其所指對象的值,這樣做完全依賴于所指對象類型。

*pip=2.72;//錯誤:pip是一個指向常量的指針
if(*curErr)//如果curErr所指的對象的值不為0
{
	errorHandler();
	*curErr=0; //正確:把curErr所指的對象的值重置
}

3、頂層const

  • 頂層 const (top-level const) 表示指針本身是個常量;
  • 底層 const (low-level const) 表示指針所指的對象是一個常量;

4、constexpr和常量表達式

  • 常量表達式:是指值不會改變并且在編譯過程就能得到計算結果的表達式。顯然,字面值是常量表達式,用常量表達式初始化的const對象也是常量表達式。
  • constexpr 變量 :在C++11 新標準規(guī)定,允許將變量聲明為 constexpr 類型以便編譯器來驗證變量的值是否是一個常量表達式。
  • 字面值類型:指簡單易見的數據類型,比如:算術類型、引用和指針等。
  • 指針和 constexpr :必須申明,在constexpr聲明中定義了一個指針,限定符constexpr僅對指針有效,對指針所指的對象無關:
const int *p=nullptr;//p是一個指向整型常量的指針
constexpr int *q=nullptr;//q是一個指向整數的常量指針

與其他常量指針類似,constexpr 指針既可以指向常量也可以指向一個非常量。

到此這篇關于C++中的const限定符的使用和作用的文章就介紹到這了,更多相關C++ const限定符內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言指針超詳細講解下篇

    C語言指針超詳細講解下篇

    指針提供了對地址操作的一種方法,因此,使用指針可使得?C?語言能夠更高效地實現對計算機底層硬件的操作。另外,通過指針可以更便捷地操作數組。在一定意義上可以說,指針是?C?語言的精髓
    2022-04-04
  • 深入學習C語言中memset()函數的用法

    深入學習C語言中memset()函數的用法

    這篇文章主要介紹了深入學習C語言中memset()函數的用法,是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • 關于C++對象繼承中的內存布局示例詳解

    關于C++對象繼承中的內存布局示例詳解

    這篇文章主要給大家介紹了關于C++對象繼承中內存布局的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。
    2017-08-08
  • C語言各種操作符透徹理解下篇

    C語言各種操作符透徹理解下篇

    C?語言提供了豐富的操作符,除了上篇中的算術操作符,移位操作符,位操作符,賦值操作符外,還有單目操作符、關系操作符、邏輯操作符、條件操作符等等,讓我們通讀本篇來詳細了解吧
    2022-02-02
  • c語言實現整蠱朋友小程序(附源碼)

    c語言實現整蠱朋友小程序(附源碼)

    這篇文章主要給大家介紹了關于c語言實現整蠱朋友小程序的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • 學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家
    2017-04-04
  • C++詳細講解引用類型

    C++詳細講解引用類型

    引用指的是對一個對象的引用。那么什么是對象?在c++中狹義的對象指的是用類,結構,聯(lián)合等復雜數據類型來聲明的變量,如?MyClass?myclass,CDialog?mydlg,等等
    2022-07-07
  • C語言繪制三角函數曲線

    C語言繪制三角函數曲線

    這篇文章主要為大家詳細介紹了C語言繪制三角函數曲線,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C語言編程數據結構線性表之順序表和鏈表原理分析

    C語言編程數據結構線性表之順序表和鏈表原理分析

    本篇文章是C語言編程篇主要為大家介紹了C語言編程中的數據結構線性表,文中附含豐富的圖文示例代碼為大家詳解了線性表中的順序表和鏈表,有需要的朋友可以借鑒參考下
    2021-09-09
  • 算法詳解之分治法具體實現

    算法詳解之分治法具體實現

    這篇文章主要介紹了算法詳解之分治法具體實現,需要的朋友可以參考下
    2014-02-02

最新評論