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

詳解C++?左值引用與?const?關(guān)鍵字

 更新時間:2022年09月20日 09:41:58   作者:木三百川  
這篇文章主要介紹了C++?左值引用與?const?關(guān)鍵字,左值引用是已定義的變量的別名,其主要用途是用作函數(shù)的形參,將?const?關(guān)鍵字用于左值引用時,其在初始化時可接受的賦值形式變得更加廣泛了,這里來總結(jié)一下,需要的朋友可以參考下

左值引用是已定義的變量的別名,其主要用途是用作函數(shù)的形參,將 const 關(guān)鍵字用于左值引用時,其在初始化時可接受的賦值形式變得更加廣泛了,這里來總結(jié)一下。

左值引用是已定義的變量的別名,其主要用途是用作函數(shù)的形參,通過將左值引用變量用作參數(shù),函數(shù)將使用原始數(shù)據(jù),而不是副本。引用變量必須在聲明時同時初始化,可將 const 關(guān)鍵字用于左值引用,如下所示:

//聲明并初始化常規(guī)左值引用變量
int x = 55;
int & rx = x;
 
//將const關(guān)鍵字用于左值引用變量,以下幾種為等效表示
int x = 55;
const int & crx = x;
int const & crx = x;

在 Microsoft Visual Studio 中連續(xù)多個 const 會被編譯器解釋成一個,即 const const const const int &const int & 等效,除此之外,const int const & 在 Microsoft Visual Studio 中也與 const int & 等效,而 int & const 在 QT 中將會報錯,在 Microsoft Visual Studio 中與 int & 等效。

以上兩種類型左值引用的特性如下(舊版 C++ 可能與下列特性不十分吻合,以 C++11 為準(zhǔn)):

  • 類型為 int & 的引用 rx 只能作為已有變量的別名,不會生成臨時變量,可修改所引用變量的值,可將 int 變量、int & 變量、int * 指針?biāo)缸兞俊?code>int *const 指針?biāo)缸兞吭诔跏蓟瘯r賦給 rx(接受可通過地址訪問的非 const 變量),必須在聲明時初始化,后續(xù)無法更換所引用的變量。變量初始化完成后,其表現(xiàn)與 int 類型一致。
  • 類型為 const int & 的引用 crx 既可作為已有變量的別名,也可在合適的時候生成臨時變量,成為該臨時變量的別名,但不可修改所引用變量的值,可將 int 變量、const int 變量、int & 變量、const int & 變量、int * 指針?biāo)缸兞俊?code>int *const 指針?biāo)缸兞俊?code>const int * 指針?biāo)缸兞俊㈩愋蜑?int 的非左值(比如字面常量 100、多項表達(dá)式 1+50*2、函數(shù)的 int 返回值)、類型不是 int 但可轉(zhuǎn)換為 int 的變量或非左值(比如 short 變量、short & 變量、多項表達(dá)式 1.0+50.0*2.0、字面常量 100.0、函數(shù)的 double 返回值)在初始化時賦給 crx,也必須在聲明時初始化,后續(xù)無法更換所引用的變量。變量初始化完成后,其表現(xiàn)與 const int 類型一致。

常規(guī)左值引用變量的初始化用法如下:

//初始化用法一:作為short變量別名
short x = 55;
short & rx = x;
cout << x;  //結(jié)果為55
cout << rx; //結(jié)果為55
cout << &x; //32位系統(tǒng)結(jié)果為0x0093F7BC
cout << &rx;//32位系統(tǒng)結(jié)果為0x0093F7BC
cout << sizeof(x); //結(jié)果為2
cout << sizeof(rx);//結(jié)果為2
 
//初始化用法二:作為short變量別名,多層引用
short x = 55;
short & rx = x;
short & rxx = rx;
 
//初始化用法三:作為short變量別名,指針表示法,指針為short*
short x = 55;
short * px = &x;
short & rx = *px;
 
//初始化用法四:作為short變量別名,指針表示法,指針為short *const
short x = 55;
short * const px = &x;
short & rx = *px;

const 關(guān)鍵字修飾的左值引用變量初始化用法如下:

//初始化用法一:作為short變量別名
short x = 55;
const short & rx = x;
 
//初始化用法二:作為const short變量別名
const short x = 55;
const short & rx = x;
 
//初始化用法三:作為short變量別名,多層引用
short x = 55;
short & rx = x;
const short & rxx = rx;
 
//初始化用法四:作為short變量別名,多層引用,第一層引用為const
short x = 55;
const short & rx = x;
const short & rxx = rx;
 
//初始化用法五:作為short變量別名,指針表示法,指針為short*
short x = 55;
short * px = &x;
const short & rx = *px;
 
//初始化用法六:作為short變量別名,指針表示法,指針為const short*
short x = 55;
const short * px = &x;
const short & rx = *px;
 
//初始化用法七:作為short變量別名,指針表示法,指針為short *const
short x = 55;
short *const px = &x;
const short & rx = *px;
 
//初始化用法八:作為short變量別名,指針表示法,指針為const short *const
short x = 55;
const short *const px = &x;
const short & rx = *px;
 
//初始化用法九:將創(chuàng)建臨時變量,類型為int的非左值,字面常量
const int & rx = 100;
 
//初始化用法十:將創(chuàng)建臨時變量,類型為int的非左值,多項表達(dá)式
const int & rx = 1+50*2;
 
//初始化用法十一:將創(chuàng)建臨時變量,類型為int的非左值,函數(shù)返回int值
const int & rx = abs(10);
 
//初始化用法十二:將創(chuàng)建臨時變量,類型不是int但可轉(zhuǎn)換為int的變量
short x = 55;
const int & rx = x;
cout << x;  //結(jié)果為55
cout << rx; //結(jié)果為55
cout << &x; //32位系統(tǒng)結(jié)果為0x006FFCF0
cout << &rx;//32位系統(tǒng)結(jié)果為0x006FFCD8
cout << sizeof(x); //結(jié)果為2
cout << sizeof(rx);//結(jié)果為4
 
//初始化用法十三:將創(chuàng)建臨時變量,類型不是int但可轉(zhuǎn)換為int的非左值,字面常量
const int & rx = 100.0;
 
//初始化用法十四:將創(chuàng)建臨時變量,類型不是int但可轉(zhuǎn)換為int的非左值,多項表達(dá)式
const int & rx = 1.0+50.0*2.0;

將初始化時 int &const int & 可接受的形式列個表,如下:

初始化時可接受的形式int & 類型const int & 類型
int 變量可以可以
const int 變量不可以可以
int & 變量可以可以
const int & 變量不可以可以
int * 所指變量可以可以
int * const 所指變量可以可以
const int * 所指變量不可以可以
const int * const 所指變量不可以可以
形如 100 的 int 字面常量不可以可以(將創(chuàng)建臨時變量)
形如 1+50*2 的 int 多項表達(dá)式不可以可以(將創(chuàng)建臨時變量)
返回類型為 int 的函數(shù)返回值不可以可以(將創(chuàng)建臨時變量)
類型可以轉(zhuǎn)換為 int 的變量不可以可以(將創(chuàng)建臨時變量)
形如 100.0 可轉(zhuǎn)換為 int 的字面常量不可以可以(將創(chuàng)建臨時變量)
形如 1.0+50.0*2.0 可轉(zhuǎn)換為 int 的多項表達(dá)式不可以可以(將創(chuàng)建臨時變量)

到此這篇關(guān)于C++ 左值引用與 const 關(guān)鍵字的文章就介紹到這了,更多相關(guān)C++ 左值引用const 關(guān)鍵字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C/C++左旋字符串實現(xiàn)代碼舉例

    C/C++左旋字符串實現(xiàn)代碼舉例

    在C/C++語言中沒有專門的字符串變量,通常用字符數(shù)組來存放字符串,下面這篇文章主要給大家介紹了關(guān)于C/C++左旋字符串實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • Qt編寫地圖實現(xiàn)實時動態(tài)軌跡效果

    Qt編寫地圖實現(xiàn)實時動態(tài)軌跡效果

    實時動態(tài)軌跡主要是需要在地圖上動態(tài)顯示GPS的運動軌跡,也是編寫地圖時一個重要的功能。本文將利用Qt實現(xiàn)這一功能,需要的可以參考一下
    2022-02-02
  • C語言?程序的編譯系統(tǒng)解析

    C語言?程序的編譯系統(tǒng)解析

    編譯程序的基本功能是把源程序(高級語言)翻譯成目標(biāo)程序。但是,作為一個具有實際應(yīng)用價值的編譯系統(tǒng),除了基本功能之外,還應(yīng)具備語法檢查、調(diào)試措施、修改手段、覆蓋處理、目標(biāo)程序優(yōu)化、不同語言合用以及人-機(jī)聯(lián)系等重要功能
    2022-02-02
  • 用typedef定義類型的總結(jié)分析

    用typedef定義類型的總結(jié)分析

    除了可以直接使用C提供的標(biāo)準(zhǔn)類型名(如:int ,char ,float,double,long等)和自己聲明的結(jié)構(gòu)體、共用體、枚舉類型外,還可以使用typedef聲明 新的類型名 來代替 已有的 類型名
    2013-08-08
  • 使用c語言生成隨機(jī)數(shù)的示例分享

    使用c語言生成隨機(jī)數(shù)的示例分享

    在C語言中,rand()函數(shù)可以用來產(chǎn)生隨機(jī)數(shù),但是這不是真真意義上的隨機(jī)數(shù),是一個偽隨機(jī)數(shù),這篇文章主要介紹了使用c語言生成隨機(jī)數(shù)的示例,需要的朋友可以參考下
    2014-03-03
  • 利用Matlab實現(xiàn)陰影柱狀圖的繪制

    利用Matlab實現(xiàn)陰影柱狀圖的繪制

    陰影柱狀圖繪制的代碼MATHWORKS上也有,不過是生成圖片后,識別圖像上不同顏色塊并直接修改像素生成陰影線。這樣的生成方式不可逆且自由度較低,所以本文為大家?guī)淼氖且粋€直接畫線條填充的硬畫版本,希望有所幫助
    2022-09-09
  • C++中一維數(shù)組與指針的關(guān)系詳細(xì)總結(jié)

    C++中一維數(shù)組與指針的關(guān)系詳細(xì)總結(jié)

    以下是對C++中一維數(shù)組與指針的關(guān)系進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下
    2013-09-09
  • c++基礎(chǔ)語法:構(gòu)造函數(shù)初始化列表

    c++基礎(chǔ)語法:構(gòu)造函數(shù)初始化列表

    構(gòu)造函數(shù)需要初始化的數(shù)據(jù)成員,不論是否顯示的出現(xiàn)在構(gòu)造函數(shù)的成員初始化列表中,都會在該處完成初始化,并且初始化的順序和其在聲明時的順序是一致的,與列表的先后順序無關(guān)
    2013-09-09
  • 馬爾可夫鏈算法(markov算法)的awk、C++、C語言實現(xiàn)代碼

    馬爾可夫鏈算法(markov算法)的awk、C++、C語言實現(xiàn)代碼

    這篇文章主要介紹了馬爾可夫鏈算法(markov算法)的awk、C++、C語言實現(xiàn)代碼,需要的朋友可以參考下
    2014-08-08
  • C++中指針和引用的區(qū)別分析

    C++中指針和引用的區(qū)別分析

    這篇文章主要介紹了C++中指針和引用的區(qū)別,有需要的朋友可以參考一下
    2014-01-01

最新評論