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

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

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

1、常量

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

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

  const對象可以分為大致三類:

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

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

//第一類
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í)行對象的拷貝操作時(shí),拷入和拷出的對象必須具有相同的底層const。
我們可以這樣理解:const int *const q如果可以拷貝初始化給q1、q2,那么意味著我們可以通過q1、q1來改變q所指的對象的值,那這樣q的底層const還有什么意義呢?

以上,是說這三類可以給哪些對象初始化,現(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í)行對象的拷貝操作時(shí),拷入和拷出的對象必須具有相同的底層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對象的初始化
這里主要有兩類:

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

先考慮他們可以給哪些對象初始化
第一類 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)一下,引用不是對象,所以沒有像 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意義在于表明不可以通過p改變它所指的對象的值,這個(gè)對象可以不是常量,只是p所指的對象對于p來說是常量,所以它所指的對象是否const 其實(shí)并沒有關(guān)系。

第二類 const int &r

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

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

相關(guān)文章

  • Linux下編譯C程序的過程

    Linux下編譯C程序的過程

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

    淺談C++重載、重寫、重定義

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

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

    這篇文章主要詳情介紹了C++內(nè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à)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-09-09
  • C語言例題講解指針與數(shù)組

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

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

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

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

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

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

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

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

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

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

最新評論

射阳县| 诏安县| 射阳县| 罗源县| 崇仁县| 淮南市| 靖宇县| 苏州市| 吴江市| 济阳县| 如皋市| 灵台县| 桂东县| 当涂县| 哈巴河县| 镇安县| 龙井市| 鄂托克前旗| 察哈| 商洛市| 彭泽县| 临西县| 博爱县| 宁城县| 云南省| 错那县| 磐石市| 鹤壁市| 扶绥县| 板桥市| 汾阳市| 南昌县| 陇川县| 仪征市| 会昌县| 聂荣县| 杭州市| 余江县| 大余县| 日照市| 开封市|