国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】const關(guān)鍵字的詳解!!

這篇具有很好參考價值的文章主要介紹了【C++】const關(guān)鍵字的詳解!!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【C++】const關(guān)鍵字的詳解??!,C++基礎(chǔ),c++,開發(fā)語言

?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???? ?? ??
??個人主頁 :阿然成長日記 ??點擊可跳轉(zhuǎn)
?? 個人專欄: ??數(shù)據(jù)結(jié)構(gòu)與算法??C語言進(jìn)階
?? 不能則學(xué),不知則問,恥于問人,決無長進(jìn)
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??

引用:

const關(guān)鍵字是永恒不變的意思,用它修飾的關(guān)鍵字只具有度的特性,沒有辦法進(jìn)行寫操作。const常變量只在編譯期有用,在運行期無用,可以很好的增加程序的健壯性,防止一些不必要的變量被錯誤修改引發(fā)的程序問題。const修飾的變量是只讀的,本質(zhì)還是變量。

現(xiàn)代C編譯器(如Vc、gcc)中的const將具有全局生命周期(如全局變量,static屬性的變量)存儲于只讀存儲區(qū),修改該變量時將導(dǎo)致程序崩潰。【注意】標(biāo)準(zhǔn)C語言編譯器(如bcc)不會被const修飾的全局變量存儲于只讀存儲區(qū),而是存儲于可修改的全局?jǐn)?shù)據(jù)區(qū),其值依然可以改變。

一、const修飾范圍

(1)定義常量,和define語句類似。但是相比較而言,使用const在很多編譯器中是不會給分配空間的,這樣可以大大減少內(nèi)存的使用量。

(2)const修飾函數(shù)形參。const類型變量必須定義的時候進(jìn)行初始化,因此也導(dǎo)致如果類的成員變量有const類型的變量,那么該變量必須在類的初始化列表中進(jìn)行初始化;

(3)const可以修飾形參,表明它是一個輸入?yún)?shù),在函數(shù)內(nèi)部不能改變其值。

(4)修飾函數(shù)返回值。參數(shù)可以直接賦值給一個常量或者指針。const修飾函數(shù)返回值表示返回值不可改變,多用于返回指針的情形。

(5)修飾成員函數(shù),形參后加const,其實是用來修飾this指針,使其變?yōu)槌A恐羔?,使得在該成員函數(shù)中不能對類的任何成員進(jìn)行修改

二、const修飾指針,常量,

1.情況一

首先,我們要清楚, int* const pa = &a;中的pa是一個指針,而*pa是指針的解引用,是指針指向的值。

int* const pa = &a;

【C++】const關(guān)鍵字的詳解??!,C++基礎(chǔ),c++,開發(fā)語言
可以發(fā)現(xiàn)【pa = &b;】直接對pa的內(nèi)容修改是不行的。但是【*pa = b;】可以通過指針去修改其內(nèi)容。也就是說,const此時修飾的是pc。

情況二

const int *pa = &a;
【C++】const關(guān)鍵字的詳解?。?C++基礎(chǔ),c++,開發(fā)語言
可以發(fā)現(xiàn)【pa = &b;】直接對pa的內(nèi)容修改是可以的。但是【*pa = b;】不可以通過指針去修改其內(nèi)容。也就是說,const此時修飾的是*pa。

情況三

int const* pa = &a;
【C++】const關(guān)鍵字的詳解!!,C++基礎(chǔ),c++,開發(fā)語言
結(jié)果證明,這種const所處位置造成結(jié)果與情況二一致。

三、修飾類的成員函數(shù)

1.格式:

void Print() const{}

class Date
{
public:
	Date(int year, int month, int day)
	{
		_year = year;
		_month = month;
		_day = day;
	}
	void Print() const
	{
		cout << "Print()" << endl;
		cout << "year:" << _year << endl;
		cout << "month:" << _month << endl;
		cout << "day:" << _day << endl << endl;
	}
private:
	int _year; // 年
	int _month; // 月
	int _day; // 日
};

這里的const修飾形參中的隱藏參數(shù)相當(dāng)于Date *const this。

2.為什么要使用const修飾成員函數(shù)?修飾的是誰?

答:(1)首先我們要清楚,類的成員函數(shù)中才會存在this指針。this指針是一個指向當(dāng)前對象的指針,只有在成員函數(shù)中才有定義。this指針一般都是隱藏的,存在于形參列表的最左邊。
(2)const修飾this指針指向的對象,這也就保證調(diào)用這個const成員函數(shù)的對象在內(nèi)部不會被改變

注意:

  • 非成員函數(shù),沒有this指針,不能使用const修飾。

總結(jié),如果成員函數(shù)不需要修改成員變量,最好加上const。反之,如果成員函數(shù)需要修改成員變量,那么久不能加const。cosnt修飾*this。

3.函數(shù)訪問時的權(quán)限問題

允許原則: 權(quán)限平移,權(quán)限縮小,不能權(quán)限放大。文章來源地址http://www.zghlxwxcb.cn/news/detail-771538.html

  • 非const對象都可以訪問const對象,權(quán)限縮小。
  • const對象可以訪問const對象,權(quán)限平移。
  • const對象不能訪問非const對象,會造成權(quán)限放大。

到了這里,關(guān)于【C++】const關(guān)鍵字的詳解?。〉奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 在C++和C中static關(guān)鍵字的用法,在C++和C中const關(guān)鍵字的用法

    1、在C++和C中static的用法 答:static表示存儲類型,修飾數(shù)據(jù)類型。在C語言中,static修飾局部變量,內(nèi)存分配在靜態(tài)區(qū),生命周期延長,作用域不變。static修飾全局變量,內(nèi)存分配在靜態(tài)區(qū),作用域被局限于本文件,不能被extern引用。static修飾函數(shù),不能被exter

    2024年02月10日
    瀏覽(21)
  • 重學(xué)C++系列之const與static關(guān)鍵字分析

    重學(xué)C++系列之const與static關(guān)鍵字分析

    ? ? ? ? 本篇幅講解const與static,主要圍繞在類的范圍內(nèi)敘述,包括作用和使用場景等。 ? ? ? ? 1、const修飾的成員變量,成員變量初始化后不能再修改。 ? ? ? ? 2、const修飾的成員函數(shù),成員函數(shù)不可以修改成員變量,也不能間接修改。 ? ? ? ? 3、static修飾的成員

    2024年02月15日
    瀏覽(22)
  • 【C++】const、static關(guān)鍵字和構(gòu)造函數(shù)初始化

    【C++】const、static關(guān)鍵字和構(gòu)造函數(shù)初始化

    ??個人主頁?? ?個人專欄——C++學(xué)習(xí)? ??點擊關(guān)注??一起學(xué)習(xí)C語言???? 目錄 1. const修飾成員函數(shù) 1.1 語法格式 1.2 權(quán)限放大縮小 1.3 思考 1.4 解答 2. 再談構(gòu)造函數(shù) 2.1 構(gòu)造函數(shù)體賦值 2.2 初始化列表 2.3 explicit 3. static成員 3.1 靜態(tài)變量 3.2 靜態(tài)函數(shù) 3.3?靜態(tài)成員變量

    2024年02月19日
    瀏覽(21)
  • 嵌入式C語言關(guān)鍵字(const、static、volitatile)

    C語言中const修飾通常是用來聲明常量,并聲明常量的值不能修改。當(dāng)涉及 指針變量 時情況就會變得更加有趣,需要特別注意。因為有兩樣?xùn)|西都有可能成為常量— 一種是用來限定指向的空間的值不可修改;另一種是限定指針不可修改 。下面是幾個聲明的例子: 總結(jié):cons

    2024年02月06日
    瀏覽(26)
  • C++基礎(chǔ)之關(guān)鍵字——virtual詳解

    C++基礎(chǔ)之關(guān)鍵字——virtual詳解

    修飾父類中的普通函數(shù) 被修飾的函數(shù)稱為虛函數(shù), 是C++中多態(tài)的一種實現(xiàn)(多說一句,多態(tài)分編譯時多態(tài)-通過重載實現(xiàn)和運行時多態(tài)-通過虛函數(shù)實現(xiàn))。 也就是說用父類的指針或者引用指向其派生類的對象,當(dāng)使用指針或引用調(diào)用函數(shù)的時候會根據(jù)具體的對象類型調(diào)用對應(yīng)對

    2024年02月08日
    瀏覽(22)
  • [開發(fā)語言][c++]:Static關(guān)鍵字和全局變量

    [開發(fā)語言][c++]:Static關(guān)鍵字和全局變量

    寫在前面: 如果您只是想回顧或了解一下static和全局變量的異同點,那么下面的總結(jié)將滿足您的需求。 如果您是一位初學(xué)者或?qū)Χ叩氖褂媚@鈨煽?,建議您讀完該篇文章,相信這一篇將解答完您對于static以及全局變量的所有疑惑。 如有問題或建議歡迎評論 or 私信

    2024年01月20日
    瀏覽(46)
  • C++面試八股文:static和const的關(guān)鍵字有哪些用法?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第7面: 面試官:C++中, static 和 const 的有哪些用法? 二師兄: satic 主要用在以下三個方面:1.用在全局作用域,修飾的變量或者函數(shù)為靜態(tài)的,限制在本文件內(nèi)使用。2.方法內(nèi)修飾修飾靜態(tài)局部變量,在第一次訪問

    2024年02月08日
    瀏覽(22)
  • 【34JavaScript let 和 const】JavaScript中的“l(fā)et“和“const“關(guān)鍵字詳解:作用、用法及區(qū)別

    // 使用 let 聲明變量 let x = 10; // 在同一作用域內(nèi)重新賦值 x = 20; // 在不同的作用域內(nèi)使用 let 聲明變量 function example() { let y = 30; console.log(x); // 輸出:20 console.log(y); // 輸出:30 } console.log(x); // 輸出:20 console.log(y); // 報錯:y is not defined // 使用 const 聲明常量 const PI = 3.14159; // 嘗

    2024年02月08日
    瀏覽(23)
  • 關(guān)于c++中mutable、const、volatile這三個關(guān)鍵字及對應(yīng)c++與匯編示例源碼

    這哥三之間的關(guān)系是有趣的,不妨看看這個: cv (const and volatile) type qualifiers - cppreference.com permits modification of the class member declared mutable even if the containing object is declared const. 即便一個對象是const的,它內(nèi)部的成員變量如果被mutable修飾,則此成員變量依舊可以被修改。 很常見,

    2024年02月13日
    瀏覽(63)
  • C語言中volatile/register/const/static/extern/auto關(guān)鍵字的作用

    目錄 一、volatile 二、register詳解 三、const詳解 四、static詳解 五、extern詳解 語法 作用 六、auto詳解 突然想總結(jié)一下這些的作用,靈活使用這些對程序的可靠性和速率都有提高 volatile是防止編譯器優(yōu)化,如果是高頻繁的變量編譯器會自動將變量放到寄存器中,但是有的變

    2024年02月07日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包