亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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ì)象可以分為大致三類(lèi):

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

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

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

而第三類(lèi)則需要我們注意一下,因?yàn)榈谌?lèi)還有一個(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ō)這三類(lèi)可以給哪些對(duì)象初始化,現(xiàn)在我們看看哪些可以給這三類(lèi)初始化

第一類(lèi)const int m

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

第二類(lèi)int *const p

//以下一些變量不初始化,我把重點(diǎn)落在類(lèi)型。
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

第三類(lèi) const int *const q

//以下一些變量不初始化,我把重點(diǎn)落在類(lèi)型。
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ì)象的初始化
這里主要有兩類(lèi):

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

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

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

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

第二類(lèi) const int &r

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

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

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

//以下一些變量不初始化,我把重點(diǎn)落在類(lèi)型。
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)系。

第二類(lèi) const int &r

//以下一些變量不初始化,我把重點(diǎn)落在類(lèi)型。
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)文章

  • C++模擬實(shí)現(xiàn)string類(lèi)的實(shí)例代碼

    C++模擬實(shí)現(xiàn)string類(lèi)的實(shí)例代碼

    這篇文章主要給大家介紹了C++如何模擬實(shí)現(xiàn)string類(lèi),文章通過(guò)代碼示例講解的非常詳細(xì),有完整的實(shí)現(xiàn)過(guò)程,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-08-08
  • C語(yǔ)言用棧模擬實(shí)現(xiàn)隊(duì)列問(wèn)題詳解

    C語(yǔ)言用棧模擬實(shí)現(xiàn)隊(duì)列問(wèn)題詳解

    本片文章帶你分析如何用兩個(gè)棧,并且只使用棧的基本功能來(lái)模擬實(shí)現(xiàn)隊(duì)列,其中同樣只實(shí)現(xiàn)隊(duì)列的基本功能,感興趣的朋友來(lái)看看吧
    2022-04-04
  • Qt使用QPainter繪制3D立方體

    Qt使用QPainter繪制3D立方體

    這篇文章主要為大家詳細(xì)介紹了Qt使用QPainter繪制3D立方體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C語(yǔ)言循環(huán)隊(duì)列與用隊(duì)列實(shí)現(xiàn)棧問(wèn)題解析

    C語(yǔ)言循環(huán)隊(duì)列與用隊(duì)列實(shí)現(xiàn)棧問(wèn)題解析

    循環(huán)隊(duì)列又叫環(huán)形隊(duì)列,是一種特殊的隊(duì)列。循環(huán)隊(duì)列解決了隊(duì)列出隊(duì)時(shí)需要將所有數(shù)據(jù)前移一位的問(wèn)題,本篇帶你一起看看循環(huán)隊(duì)列的問(wèn)題和怎樣用隊(duì)列實(shí)現(xiàn)棧
    2022-04-04
  • 利用C++的基本算法實(shí)現(xiàn)十個(gè)數(shù)排序

    利用C++的基本算法實(shí)現(xiàn)十個(gè)數(shù)排序

    以下是對(duì)利用C++的基本算法實(shí)現(xiàn)十個(gè)數(shù)排序的代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • 關(guān)于C語(yǔ)言指針賦值的問(wèn)題詳解

    關(guān)于C語(yǔ)言指針賦值的問(wèn)題詳解

    本篇文章是對(duì)C語(yǔ)言指針賦值的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • VisualStudio2022提交git代碼的方法實(shí)現(xiàn)

    VisualStudio2022提交git代碼的方法實(shí)現(xiàn)

    本文主要介紹了VisualStudio2022提交git代碼的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Qt快速讀取大文件最后一行內(nèi)容解決方案

    Qt快速讀取大文件最后一行內(nèi)容解決方案

    這篇文章主要給大家介紹了關(guān)于Qt如何快速讀取大文件最后一行內(nèi)容的解決方案,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Qt具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • Windows10配置VSCode C++環(huán)境(超詳細(xì),面向小白以及大佬們)

    Windows10配置VSCode C++環(huán)境(超詳細(xì),面向小白以及大佬們)

    這篇文章主要介紹了Windows10配置VSCode C++環(huán)境(超詳細(xì),面向小白以及大佬們),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C++獲取指定目錄下的所有文件

    C++獲取指定目錄下的所有文件

    這篇文章主要為大家詳細(xì)介紹了C++獲取指定目錄下所有文件的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評(píng)論