最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++常量詳解一(常量指針與常量引用的初始化)

 更新時(shí)間:2017年06月02日 23:34:31   作者:Jang1996  
這篇文章主要介紹了C++常量詳解一(常量指針與常量引用的初始化),需要的朋友可以參考下

1、常量

1.1、常量的初始化:
const對(duì)象一旦創(chuàng)建后其值就不能再改變,所以const對(duì)象必須初始化。這里我們要注意一點(diǎn),像const int *p和const int &r都并不是const對(duì)象。因?yàn)閏onst int *p只是表示不能通過(guò)p改變p所指的對(duì)象的值,p的值是可以變的,所以p可以不用初始化。至于r ,引用本身就不是對(duì)象,所以r也并不是const對(duì)象,r之所以一定初始化,是因?yàn)橐帽仨毘跏蓟?。?duì)于以上內(nèi)容,你也可以理解為底層const 修飾的并不是const對(duì)象,還要注意像const int *const p1這種,這是一定要初始化的,這是const對(duì)象,因?yàn)樗幸粋€(gè)頂層const。

1.1.1分清了const對(duì)象后,讓我們先把目光聚集到const對(duì)象這里。

  const對(duì)象可以分為大致三類:

 const int m
 int *const p
 const int *const q

而這前兩類都可以用來(lái)給非const對(duì)象或者const對(duì)象初始化,因?yàn)檫@前兩類都是頂層const,初始化時(shí)的拷貝是不會(huì)對(duì)他們的自身值做出什么改變,即以下代碼均正確。

//第一類
int m1=m;//正確
const int m2=m;//正確
//第二類
int *p1=p;//正確
int *const p2=p;//正確
const int *p3=p;//正確
const int *const p4=p;//正確  

而第三類則需要我們注意一下,因?yàn)榈谌愡€有一個(gè)底層const。
const int *const q

int *q1=q;//報(bào)錯(cuò)
int *const q2=q;//報(bào)錯(cuò)
const int *q3=q;//正確
const int *const q4=q;//正確

底層const有一個(gè)限制:當(dāng)執(zhí)行對(duì)象的拷貝操作時(shí),拷入和拷出的對(duì)象必須具有相同的底層const。
我們可以這樣理解:const int *const q如果可以拷貝初始化給q1、q2,那么意味著我們可以通過(guò)q1、q1來(lái)改變q所指的對(duì)象的值,那這樣q的底層const還有什么意義呢?

以上,是說(shuō)這三類可以給哪些對(duì)象初始化,現(xiàn)在我們看看哪些可以給這三類初始化

第一類const int m

//以下一些變量不初始化,我把重點(diǎn)落在類型。
int m1;
const int m2;
const int m=m1;//正確
const int m=m2;//正確

第二類int *const p

//以下一些變量不初始化,我把重點(diǎn)落在類型。
int *p1;
int *const p2;
const int *p3;
const int *const p4;

int *const p=p1;//正確
int *const p=p2;//正確
int *const p=p3;//錯(cuò)誤
int *const p=p4;//錯(cuò)誤

這里的報(bào)錯(cuò)同樣因?yàn)榈讓觕onst有一個(gè)限制:當(dāng)執(zhí)行對(duì)象的拷貝操作時(shí),拷入和拷出的對(duì)象必須具有相同的底層const

第三類 const int *const q

//以下一些變量不初始化,我把重點(diǎn)落在類型。
int *q1;
int *const q2;
const int *q3;
const int *const q4;

const int *const q=q1;//正確
const int *const q=q2;//正確
const int *const q=q3;//正確
const int *const q=q4;//正確

1.1.2 現(xiàn)在讓我們把目光轉(zhuǎn)回非const對(duì)象的初始化
這里主要有兩類:

//以下一些變量不初始化,我把重點(diǎn)落在類型。
const int *p;
const int &r;

先考慮他們可以給哪些對(duì)象初始化
第一類 const int *p

//以下一些變量不初始化,我把重點(diǎn)落在類型。
int *p1=p;//報(bào)錯(cuò)
int *const p2=p;//報(bào)錯(cuò)
const int *p3=p;//正確
const int *const p4=p;//正確

此處同樣由于低層const的限制

第二類 const int &r

//以下一些變量不初始化,我把重點(diǎn)落在類型。
int &r1=r;//錯(cuò)誤
const int &r2=r;//正確

這里強(qiáng)調(diào)一下,引用不是對(duì)象,所以沒(méi)有像 int *const &r或者const int *const &r這種形式

好,再考慮哪些可以給他們初始化
第一類 const int *p

//以下一些變量不初始化,我把重點(diǎn)落在類型。
int *p1;
int *const p2;
const int *p3;
const int *const p4;

const int *p=p1;//正確
const int *p=p2;//正確
const int *p=p3;//正確
const int *p=p4;//正確

因?yàn)閏onst int *p意義在于表明不可以通過(guò)p改變它所指的對(duì)象的值,這個(gè)對(duì)象可以不是常量,只是p所指的對(duì)象對(duì)于p來(lái)說(shuō)是常量,所以它所指的對(duì)象是否const 其實(shí)并沒(méi)有關(guān)系。

第二類 const int &r

//以下一些變量不初始化,我把重點(diǎn)落在類型。
int &r1;
const int &r2;
const int &r=r1;//正確
const int &r=r2;//正確

這里const同樣是指不能通過(guò)r改變它所引用的對(duì)象,所以它所引用的對(duì)象本身是不是const無(wú)關(guān)緊要。
縱觀以上的錯(cuò)誤,都是試圖把底層const拷貝初始化給沒(méi)有底層const的對(duì)象。
以上就是關(guān)于涉及到常量的指針和引用的初始化的解釋了。

相關(guān)文章

  • Linux下編譯C程序的過(guò)程

    Linux下編譯C程序的過(guò)程

    我們總是在Linux下輸入 gcc -o app main.c 即可編譯好程序,對(duì)于具體的詳細(xì)過(guò)程及流程,相信親們就不太了解啦!下面給大家展示一下C編譯器的解釋全過(guò)程。
    2016-01-01
  • 淺談C++重載、重寫(xiě)、重定義

    淺談C++重載、重寫(xiě)、重定義

    下面小編就為大家?guī)?lái)一篇淺談C++重載、重寫(xiě)、重定義。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • C++內(nèi)存池兩種方案解析

    C++內(nèi)存池兩種方案解析

    這篇文章主要詳情介紹了C++內(nèi)存池兩種方案做對(duì)比,對(duì)此感興趣的小伙伴一起來(lái)看看吧
    2021-08-08
  • C++獲取文件哈希值(hash)和獲取torrent(bt種子)磁力鏈接哈希值

    C++獲取文件哈希值(hash)和獲取torrent(bt種子)磁力鏈接哈希值

    這二個(gè)代碼一個(gè)是獲取文件哈希值的,另外一個(gè)是獲取torrent文件磁力鏈接的哈希值
    2013-11-11
  • c++ 數(shù)字類型和字符串類型互轉(zhuǎn)詳解

    c++ 數(shù)字類型和字符串類型互轉(zhuǎn)詳解

    今天小編就為大家分享一篇講解c++ 數(shù)字類型和字符串類型互轉(zhuǎn)的文章,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-09-09
  • C語(yǔ)言例題講解指針與數(shù)組

    C語(yǔ)言例題講解指針與數(shù)組

    在C語(yǔ)言和C++等語(yǔ)言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲(chǔ)類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來(lái)指向若干個(gè)字符串,使字符串處理更加方便、靈活
    2022-07-07
  • C語(yǔ)言實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲

    C語(yǔ)言實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++中引用和const關(guān)鍵字介紹

    C++中引用和const關(guān)鍵字介紹

    大家好,本篇文章主要講的是C++中引用和const關(guān)鍵字介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • C++深入淺出講解缺省參數(shù)

    C++深入淺出講解缺省參數(shù)

    所謂缺省參數(shù),顧名思義,就是在聲明函數(shù)的某個(gè)參數(shù)的時(shí)候?yàn)橹付ㄒ粋€(gè)默認(rèn)值,在調(diào)用該函數(shù)的時(shí)候如果采用該默認(rèn)值,你就無(wú)須指定該參數(shù)。缺省參數(shù)使用主要規(guī)則:調(diào)用時(shí)你只能從最后一個(gè)參數(shù)開(kāi)始進(jìn)行省略,換句話說(shuō),如果你要省略一個(gè)參數(shù),你必須省略它后面所有的參數(shù)
    2022-07-07
  • C++11中匿名函數(shù)lambda的使用詳解

    C++11中匿名函數(shù)lambda的使用詳解

    我最早接觸lambda的概念是在matlab中,那時(shí)候在做數(shù)值模擬的課題,lambda可以快速定義簡(jiǎn)單的函數(shù),當(dāng)時(shí)覺(jué)得好方便。任何語(yǔ)言都有這個(gè)功能,下面來(lái)看看C++11新引入的lambda是如何使用的吧
    2023-04-04

最新評(píng)論

五莲县| 平邑县| 博客| 将乐县| 宜君县| 囊谦县| 嘉义县| 临江市| 大庆市| 河间市| 视频| 札达县| 乌鲁木齐县| 方城县| 大同市| 丽江市| 宜昌市| 丰城市| 讷河市| 望谟县| 祁门县| 额尔古纳市| 江永县| 沙湾县| 古田县| 徐水县| 丹棱县| 铅山县| 周至县| 梅州市| 卢湾区| 玛曲县| 灌南县| 鄂伦春自治旗| 桐庐县| 伊川县| 巴林左旗| 松滋市| 奉新县| 桂林市| 中宁县|