日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

const pointer

發布時間:2025/4/14 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 const pointer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • const在函數前與函數后的區別

  • 一?? const基礎???
    ????
    ? 如果const關鍵字不涉及到指針,我們很好理解,下面是涉及到指針的情況:???
    ????
    ? int?? b?? =?? 500;???
    ? const?? int*?? a?? =?? &b;?????????? ?? [1]???
    ? int?? const?? *a?? =?? &b;??????????? ? [2]???
    ? int*?? const?? a?? =?? &b;?????????? ?? [3]???
    ? const?? int*?? const?? a?? =?? &b;?? [4]???
    ????
    ? 如果你能區分出上述四種情況,那么,恭喜你,你已經邁出了可喜的一步。不知道,也沒關系,我們可以參考《effective?? c++》item21上的做法,如果const位于星號的左側,則const就是用來修飾指針所指向的變量,即指針指向為常量;如果const位于星號的 右側,const就是修飾指針本身,即指針本身是常量。因此,[1]和[2]的情況相同,都是指針所指向的內容為常量,這種情況下不允許對內容進行更改操 作,如不能*a?? =?? 3?? ;[3]為指針本身是常量,而指針所指向的內容不是常量,這種情況下不能對指針本身進行更改操作,如a++是錯誤的;[4]為指針本身和指向的內容均為常 量。???
    ? 另外const?? 的一些強大的功能在于它在函數聲明中的應用。在一個函數聲明中,const?? 可以修飾函數的返回值,或某個參數;對于成員函數,還可以修飾是整個函數。有如下幾種情況,以下會逐漸的說明用法:a&?? operator=(const?? a&?? a);???
    ? void?? fun0(const?? a*?? a?? );???
    ? void?? fun1(?? )?? const;?? //?? fun1(?? )?? 為類成員函數???
    ? const?? a?? fun2(?? );???
    ????
    ? 二?? const的初始化???
    ????
    ? 先看一下const變量初始化的情況???
    ? 1)?? 非指針const常量初始化的情況:a?? b;???
    ? const?? a?? a?? =?? b;???
    ????
    ? 2)?? 指針(引用)const常量初始化的情況:a*?? d?? =?? new?? a();???
    ??? const?? a*?? c?? =?? d;???
    ? 或者:const?? a*?? c?? =?? new?? a();???
    ? 引用:???
    ??? a?? f;???
    ??? const?? a&?? e?? =?? f;?? //?? 這樣作e只能訪問聲明為const的函數,而不能訪問一般的成員函數;???
    ????
    ? [思考1]:?? 以下的這種賦值方法正確嗎????
    ? const?? a*?? c=new?? a();???
    ? a*?? e?? =?? c;???
    ? [思考2]:?? 以下的這種賦值方法正確嗎????
    ? a*?? const?? c?? =?? new?? a();???
    ? a*?? b?? =?? c;???
    ????
    ? 三?? 作為參數和返回值的const修飾符???
    ????
    ? 其實,不論是參數還是返回值,道理都是一樣的,參數傳入時候和函數返回的時候,初始化const變量???
    ? 1?? 修飾參數的const,如?? void?? fun0(const?? a*?? a?? );?? void?? fun1(const?? a&?? a);???
    ? 調用函數的時候,用相應的變量初始化const常量,則在函數體中,按照const所修飾的部分進行常量化,如形參為const?? a*?? a,則不能對傳遞進來的指針的內容進行改變,保護了原指針所指向的內容;如形參為const?? a&?? a,則不能對傳遞進來的引用對象進行改變,保護了原對象的屬性。???
    ? [注意]:參數const通常用于參數為指針或引用的情況;???
    ? 2?? 修飾返回值的const,如const?? a?? fun2(?? );?? const?? a*?? fun3(?? );???
    ? 這樣聲明了返回值后,const按照"修飾原則"進行修飾,起到相應的保護作用。const?? rational?? operator*(const?? rational&?? lhs,?? const?? rational&?? rhs)???
    ? {???
    ? return?? rational(lhs.numerator()?? *?? rhs.numerator(),???
    ? lhs.denominator()?? *?? rhs.denominator());???
    ? }???
    ????
    ? 返回值用const修飾可以防止允許這樣的操作發生:rational?? a,b;???
    ? radional?? c;???
    ? (a*b)?? =?? c;???
    ????
    ? 一般用const修飾返回值為對象本身的情況多用于二目操作符重載函數并產生新對象的時候。???
    ? [總結]?? 一般情況下,函數的返回值為某個對象時,如果將其聲明為const時,多用于操作符的重載。通常,不建議用const修飾函數的返回值類型為某個對象或對 某個對象引用的情況。???
    ? 原因如下:???
    ? 如果返回值為某個對象為const或某個對象的引用為const?? ,則返回值具有const屬性,則返回實例只能訪問類a中的公有數據成員和const成員函數,并且不允許對其進行賦值操作,這在一般情況下很少用 到。???
    ????
    ? [思考3]:?? 這樣定義賦值操作符重載函數可以嗎????
    ? const?? a&?? operator=(const?? a&?? a);???
    ????
    ? 四?? 類成員函數中const的使用???
    ????
    ? 一般放在函數體后,形如:void?? fun()?? const;???
    ? 如果一個成員函數的不會修改數據成員,那么最好將其聲明為const,因為const成員函數中不允許對數據成員進行修改,如果修改,編譯器將報錯,這大 大提高了程序的健壯性。???
    ? 五?? 使用const的一些建議???
    ????
    ? 1?? 要大膽的使用const,這將給你帶來無盡的益處,但前提是你必須搞清楚原委;???
    ? 2?? 要避免最一般的賦值操作錯誤,如將const變量賦值,具體可見思考題;???
    ? 3?? 在參數中使用const應該使用引用或指針,而不是一般的對象實例,原因同上;???
    ? 4?? const在成員函數中的三種用法要很好的使用;???
    ? 5?? 不要輕易的將函數的返回值類型定為const;???
    ? 6?? 除了重載操作符外一般不要將返回值類型定為對某個對象的const引用; ?

總結

以上是生活随笔為你收集整理的const pointer的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲欧洲国产精品 | 日韩女优一区 | 日韩一级中文字幕 | 亚洲婷婷综合网 | 成人在线观看免费高清 | 人妻少妇偷人精品视频 | 黄色片aaaa | 永久毛片 | 亚洲精品国产99 | a v在线视频 | 欧美精品一区二区三区三州 | 午夜国产在线观看 | 丰满人妻熟妇乱偷人无码 | 色99在线 | 亚洲欧美日韩一区二区三区四区 | 网站久久 | 特级毛片av | 91麻豆精品久久久久蜜臀 | 在线视频中文字幕 | 亚洲精品专区 | 欧美视频www | 久久久国产亚洲 | 国产精品黄视频 | 天堂va在线| 久久水蜜桃 | 日本一区二区免费高清视频 | 亚洲天堂视频在线观看 | 国产美女作爱视频 | 亚洲一区二区视频在线观看 | 欧美日韩亚洲激情 | 欧美 日韩 国产 高清 | 日本午夜小视频 | 亚洲最大激情网 | 亚洲一区二区成人 | 九色视频网站 | 久久这里只有精品23 | 欧美成人黄色 | 中文一区二区在线 | 成年人网站免费看 | 男插女av| 国产一区二区免费视频 | 色呦呦国产 | 欧美性天天 | 久久男人的天堂 | 丰满岳跪趴高撅肥臀尤物在线观看 | 国产三级做爰高清在线 | 成人无高清96免费 | 国产一区二区三区免费视频 | аⅴ资源中文在线天堂 | 青娱乐在线视频免费观看 | 欧美精品一区三区 | 69综合 | 中文字幕第9页 | 美女免费黄色 | 日韩精品免费在线 | 国产一区二区久久久 | 天天操天天操天天操天天操天天操 | 99国产在线播放 | 国产伦精品视频一区二区三区 | www国产在线| 久久久成人精品一区二区三区 | av网址网站 | 538国产精品视频一区二区 | 9.1成人看片| 午夜精品一二三区 | 草草影院第一页yycc.com | 好吊妞视频在线 | 欧美亚洲国产日韩 | 国产一区二区三区四区五区 | 日韩一区久久 | 久久国产一区 | 日日操狠狠操 | jizz日本大全 | 国产男人的天堂 | 伊人欧美在线 | 高清国产一区二区三区四区五区 | 性xxxx狂欢老少配o | 人人爽人人干 | 精品九九视频 | 国产精品美女久久久久久 | 精品欧美日韩 | 韩国一区二区在线播放 | 日本十八禁视频无遮挡 | 日韩欧美精品一区二区 | 爽爽视频在线观看 | 亚洲三级久久 | 国产精品a级 | 天天天av| 亚洲视频一区二区 | 五月天六月色 | wwwav在线播放 | 夫妻淫语绿帽对白 | 精品久久久在线观看 | 日日日日日日 | 欧美性视频在线播放 | 欧美日韩视频在线播放 | 美景之屋电影免费高清完整韩剧 | 一本一道波多野结衣av黑人 | 四虎少妇做爰免费视频网站四 |