chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++與C的const關(guān)鍵字有何差別?

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 作者:黃工的嵌入式技術(shù) ? 2020-02-03 14:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

在《const關(guān)鍵字到底該怎么用》一文中介紹了C語(yǔ)言中的const關(guān)鍵字,本文說(shuō)說(shuō)C++中的const關(guān)鍵字,它的大部分特點(diǎn)和C語(yǔ)言中的類似,所以本文主要針對(duì)不同之處。

修飾普通變量--只讀

在C語(yǔ)言,雖然表面是不允許被修改,但是看下面的代碼:

#include intmain(void) { constinta=10; int*p=&a; *p=11; printf("a=%d\n",a); return0; } 它的輸出結(jié)果是a=11 所以C語(yǔ)言里,表面上它是只讀的,然而你違規(guī)操作仍然能改變。但是,千萬(wàn)不要寫這樣的代碼!??! 與C語(yǔ)言中const關(guān)鍵字不同的是,C++中使用const關(guān)鍵字定義的b變量的值在被改變時(shí)會(huì)被檢測(cè)。 看一個(gè)例子就明白了:#include intmain() { constinta=10; int*p=&a; *p=11; return0; } 編譯報(bào)錯(cuò)如下:main.cpp:Infunction‘intmain()’: main.cpp:5:14:error:invalidconversionfrom‘constint*’to‘int*’[-fpermissive] int*p=&a; 再次強(qiáng)調(diào):在實(shí)際中千萬(wàn)不要寫這樣的代碼,這里只是為了說(shuō)明問(wèn)題。另外它們的作用也是一樣的,聲明一個(gè)只讀變量,不希望被修改,一旦被修改,編譯器將會(huì)報(bào)錯(cuò)。 但是你運(yùn)行下面的代碼,又會(huì)有驚喜:#include voidtest(constchar*str) { char*p=(char*)str; p[0]='2'; } intmain(void) { chara[]="12345"; test(a); return0; }畢竟未定義行為常常有驚喜。 我們常常看到傳遞const char*參數(shù),像這樣:voidtest(constchar*str); 卻似乎從來(lái)沒(méi)有見(jiàn)到過(guò)const int作為參數(shù)的函數(shù):voidtest(constintval); 為何?因?yàn)榍罢邆鬟f指針的副本,指針指向不會(huì)被改變,但可以改變指向的內(nèi)容;但是int類型參數(shù),它也是傳遞副本,但是永遠(yuǎn)不會(huì)被函數(shù)改變,自然也沒(méi)有必要加const關(guān)鍵字。更多解釋可以參考《傳值和傳指針》。 同樣的,修飾函數(shù)返回值時(shí),修飾內(nèi)置類型與不加const修飾是一樣的,但對(duì)于自定義類型,不能對(duì)返回值進(jìn)行修改,即返回的是常量。

作用在成員函數(shù)-不改變成員變量

舉個(gè)例子:

#include classTest { private: inta; public: voidprintA()const { a=10; } }; intmain() { Testtest; test.printA(); return0; } 類test中有一個(gè)成員變量a,并且有一個(gè)成員函數(shù)printA,現(xiàn)在假設(shè)你的設(shè)計(jì)是printA函數(shù)不會(huì)改變?nèi)魏纬蓡T變量,那么你可以在printA函數(shù)后加上const關(guān)鍵字,這樣一旦函內(nèi)部嘗試修改成員變量,都會(huì)報(bào)錯(cuò):main.cpp:Inmemberfunction‘voidTest::printA()const’: main.cpp:9:13:error:assignmentofmember‘Test::a’inread-onlyobject a=10; 正因如此,const修飾成員函數(shù)不與static關(guān)鍵字同用,因?yàn)閟tatic修飾的靜態(tài)成員函數(shù)不能實(shí)例化,也就沒(méi)有實(shí)例的成員變量一說(shuō),自然不存在修改成員變量。 即下面的聲明是非法的:staticvoidprintA()const

修飾類成員變量--構(gòu)造函數(shù)中初始化

與修飾普通變量不同的是,修飾類成員變量還可以在構(gòu)造函數(shù)中初始化。如:

#include classTest { private: constinta; public: Test(intval):a(val){} }; intmain() { Testtest(1); return0; }

修飾引用

例如,有一個(gè)常量

constinta=10; 你不能再這樣定義它的引用:int&ref=a; 而需要定義對(duì)常量的引用,即:constint&ref=a; 為什么呢?因?yàn)椴荒苤苯訛閍賦值,也不能間接賦值,所以自然不能定義普通引用去間接改變它。

總結(jié)

關(guān)于const關(guān)鍵字在C和C++中的區(qū)別,想必到這里你已經(jīng)清楚了。const關(guān)鍵字通常能借助編譯器幫助我們提前發(fā)現(xiàn)一些不易察覺(jué)的問(wèn)題。 如果你對(duì)下面的問(wèn)題還不清楚,建議閱讀《const關(guān)鍵字到底該怎么用》 你能分清下面的聲明區(qū)別嗎?

constint*p; int*constp; intconst*constp;

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 關(guān)鍵詞
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    10825
  • C語(yǔ)音
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    12872
  • CONST
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    8676
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Temu跨境電商按關(guān)鍵字搜索Temu商品API的應(yīng)用及接口請(qǐng)求示例

    Temu跨境電商按關(guān)鍵字搜索Temu商品API的應(yīng)用及接口請(qǐng)求示例 Temu跨境電商按關(guān)鍵字搜索Temu商品API的應(yīng)用場(chǎng)景 Temu跨境電商平臺(tái)按關(guān)鍵字搜索Temu商品API的主要應(yīng)用場(chǎng)景包括但不
    的頭像 發(fā)表于 11-29 15:08 ?12次閱讀

    C語(yǔ)言的編程技巧

    、_Alignas關(guān)鍵字?:C11標(biāo)準(zhǔn)引入了_Alignas關(guān)鍵字,用于顯式指定類型的對(duì)齊方式,優(yōu)化內(nèi)存訪問(wèn)效率。 ?5、_Generic關(guān)鍵字?:
    發(fā)表于 11-27 06:46

    哪些場(chǎng)合會(huì)用到volatile關(guān)鍵字?

    當(dāng)你理解 volatile關(guān)鍵字的含義之后,你就能明白,其實(shí)很多場(chǎng)合都能用到 volatile關(guān)鍵字。 1.全局變量單片機(jī)開發(fā),難免會(huì)用到全局變量。一些初級(jí)工程師,更是全局變量滿天飛。這種情況下
    發(fā)表于 11-25 08:19

    天眼查平臺(tái)關(guān)鍵字搜索企業(yè)數(shù)據(jù)API接口技術(shù)指南

    ? 一、接口概述 天眼查提供的企業(yè)搜索API接口,支持通過(guò)關(guān)鍵字查詢企業(yè)工商信息、經(jīng)營(yíng)狀態(tài)等核心數(shù)據(jù)。該接口采用RESTful架構(gòu),返回JSON格式數(shù)據(jù)。 二、接口認(rèn)證 調(diào)用需使用API密鑰認(rèn)證
    的頭像 發(fā)表于 11-21 11:48 ?313次閱讀
    天眼查平臺(tái)<b class='flag-5'>關(guān)鍵字</b>搜索企業(yè)數(shù)據(jù)API接口技術(shù)指南

    亞馬遜平臺(tái)根據(jù)關(guān)鍵字搜索商品API接口

    ? ?在電商開發(fā)中,集成亞馬遜平臺(tái)的商品搜索功能是常見(jiàn)需求。通過(guò)亞馬遜的Product Advertising API(PAAPI),開發(fā)者可以根據(jù)關(guān)鍵字高效檢索商品信息。本技術(shù)帖將逐步介紹如何調(diào)用
    的頭像 發(fā)表于 11-05 15:00 ?99次閱讀
    亞馬遜平臺(tái)根據(jù)<b class='flag-5'>關(guān)鍵字</b>搜索商品API接口

    亞馬遜 SP-API 深度開發(fā):關(guān)鍵字搜索接口的購(gòu)物意圖挖掘與合規(guī)競(jìng)品分析

    本文深度解析亞馬遜SP-API關(guān)鍵字搜索接口的合規(guī)調(diào)用與商業(yè)應(yīng)用,涵蓋意圖識(shí)別、競(jìng)品分析、性能優(yōu)化全鏈路。通過(guò)COSMO算法解析用戶購(gòu)物意圖,結(jié)合合規(guī)技術(shù)方案提升關(guān)鍵詞轉(zhuǎn)化率,助力賣家實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)決策,安全高效優(yōu)化運(yùn)營(yíng)。
    的頭像 發(fā)表于 10-17 14:59 ?330次閱讀

    micro 關(guān)鍵字搜索全覆蓋商品,并通過(guò) API 接口提供實(shí)時(shí)數(shù)據(jù)

    micro 關(guān)鍵字搜索全覆蓋商品”并通過(guò) API 接口提供實(shí)時(shí)數(shù)據(jù)
    的頭像 發(fā)表于 07-13 10:13 ?645次閱讀

    在OpenVINO? C++代碼中啟用 AddressSanitizer 時(shí)的內(nèi)存泄漏怎么解決?

    在 OpenVINO? C++代碼中啟用 AddressSanitizer 時(shí)遇到內(nèi)存泄漏: \"#0 0xaaaab8558370 in operator new(unsigned
    發(fā)表于 06-23 07:16

    《ESP32S3 Arduino開發(fā)指南》第三章 C/C++語(yǔ)言基礎(chǔ)

    需要注意:① case后帶的表達(dá)式一定要是常數(shù),并且是整型。②在語(yǔ)句后面通常是break關(guān)鍵字。③ 最后一般default,即前面case沒(méi)有一個(gè)符合的情況,就會(huì)調(diào)到default里執(zhí)行。雖然說(shuō)
    發(fā)表于 06-10 09:20

    主流的 MCU 開發(fā)語(yǔ)言為什么是 C 而不是 C++?

    在單片機(jī)的地界兒里,C語(yǔ)言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉(zhuǎn)。先說(shuō)內(nèi)存這道坎兒。您當(dāng)stm32f4的256kRAM
    的頭像 發(fā)表于 05-21 10:33 ?766次閱讀
    主流的 MCU 開發(fā)語(yǔ)言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    單片機(jī)編程關(guān)鍵字之volatile

    volatile 修飾的變量是說(shuō)這變量可能會(huì)被意想不到地改變。通常對(duì)于程序員而言,單片機(jī) 中用的就算常見(jiàn)了volatile 是易變的,不穩(wěn)定的意思。其實(shí)對(duì)于很多人來(lái)說(shuō),根本沒(méi)見(jiàn)過(guò)這個(gè)關(guān)鍵字,不 知道
    發(fā)表于 04-02 13:47 ?2次下載

    帶你在單片機(jī)編程中熟練使用const(可下載)

    C 語(yǔ)言關(guān)鍵字const 舉足輕重,我們今天就深度聊一聊 const 的定義和實(shí)際應(yīng)用,讓它 不再是迷C 語(yǔ)言中
    發(fā)表于 04-01 14:18 ?3次下載

    基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類庫(kù)案例:ThreadPoll

    1、程序簡(jiǎn)介該程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類庫(kù)的線程池處理:ThreadPoll。本案例完成如下工作:創(chuàng)建1個(gè)線程池,設(shè)置該線程池內(nèi)部1024個(gè)線程空間。啟動(dòng)5個(gè)線程
    的頭像 發(fā)表于 02-10 18:09 ?591次閱讀
    基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的<b class='flag-5'>C++</b>公共基礎(chǔ)類庫(kù)案例:ThreadPoll

    const定義的是不是常量

    變成數(shù)字 5。 第二種跟宏定義類似,常量也可以在編譯的時(shí)候通過(guò)編譯器傳入。 以 gcc 為例,編譯的時(shí)候提供 -D 選項(xiàng),同樣會(huì)在預(yù)處理的時(shí)候替換成相應(yīng)的數(shù)字。 第三種枚舉,使用 enum 關(guān)鍵字。 枚舉的特點(diǎn)是默認(rèn)從 0 開始,逐漸遞增。如果需要大量含義相同的常量
    的頭像 發(fā)表于 01-14 11:35 ?628次閱讀

    Spire.XLS for C++組件說(shuō)明

    Spire.XLS for C++ 是一款專業(yè)的 C++ Excel 組件,可以用在各種 C++ 框架和應(yīng)用程序中。Spire.XLS for C++ 提供了一個(gè)對(duì)象模型 Excel
    的頭像 發(fā)表于 01-14 09:40 ?1284次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說(shuō)明