欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++類常量和類枚舉

 更新時(shí)間:2022年01月03日 11:15:33   作者:梁唐  
這篇文章主要介紹了C++類常量和類枚舉,給類當(dāng)中定義一些常量,可以給所有類的對(duì)象使用,比如說(shuō)我們?cè)陬惍?dāng)中定義一個(gè)數(shù)組,希望可以定義一個(gè)常量,用來(lái)初始化數(shù)組的長(zhǎng)度,那么下面我i嗎就來(lái)看看過(guò)程當(dāng)如何吧

文章轉(zhuǎn)自公眾號(hào):Coder梁(ID:Coder_LT)

1.類常量

有的時(shí)候, 我們希望能給類當(dāng)中定義一些常量,可以給所有類的對(duì)象使用。

比如說(shuō)我們?cè)陬惍?dāng)中定義一個(gè)數(shù)組,希望可以定義一個(gè)常量,用來(lái)初始化數(shù)組的長(zhǎng)度。既然是用來(lái)初始化數(shù)組長(zhǎng)度的,那么這個(gè)值自然也不會(huì)改變,我們定義成const是否可行呢?

比如這樣:

class P {
? ? private:
? ? ?const int N=15;
? ? ?int costs[N];
? ? ...
}

很遺憾,這樣不行,編譯器會(huì)拋出一個(gè)錯(cuò)誤:

說(shuō)我們non-static變量N用的不對(duì),看到了吧?報(bào)錯(cuò)信息里的描述是non-static變量,也就是說(shuō)我們這里定義的N不是一個(gè)static類型的,所以不能用來(lái)初始化數(shù)組。

那怎么樣才算對(duì)了呢?很簡(jiǎn)單,我們可以定義成static變量就對(duì)了。

class P {
? ? private:
? ? ?static const int N=15;
? ? ?int costs[N];
? ? ...
}

也就是在const int前面加上了static關(guān)鍵字,表示這是一個(gè)static即靜態(tài)變量。這個(gè)常量會(huì)和其他靜態(tài)變量存儲(chǔ)在一起,而不是存儲(chǔ)在對(duì)象里,這樣的話也就被所有對(duì)象共享了。

對(duì)于像是Java、Python等其他語(yǔ)言來(lái)說(shuō),類中的靜態(tài)變量是可以通過(guò)類名直接訪問(wèn)的,而C++中不行。

除了定義靜態(tài)變量之外,還有一種方法就是定義類枚舉:

class P {
? ? private:
? ? ?enum {N=15};
? ? ?int costs[N];
? ? ...
}

這樣也能運(yùn)行,看起來(lái)非常不可思議。

通過(guò)這種方式聲明并不會(huì)創(chuàng)建類數(shù)據(jù)成員,對(duì)于類的對(duì)象來(lái)說(shuō),并不包含枚舉,這里的N只是一個(gè)符號(hào)名稱。在類當(dāng)中遇到它的時(shí)候,編譯器會(huì)用15來(lái)代替。

也正是因?yàn)槲覀冎皇菫榱藙?chuàng)建符號(hào)常量,而不是創(chuàng)建枚舉類型的變量,所以不需要提供枚舉名。有一些C++的類庫(kù)當(dāng)中也用到了這種方法,比如ios_base::fixed等。

2.類枚舉

傳統(tǒng)的枚舉類型變量存在一定的問(wèn)題,最大的問(wèn)題是當(dāng)兩個(gè)枚舉定義中的枚舉量重名的時(shí)候,就會(huì)發(fā)生沖突:

enum A {small, big, medium};
enum B {small, large, xlarge};

這兩個(gè)枚舉類型當(dāng)中都有small,如果位于相同的作用于,那么就會(huì)發(fā)生沖突。

為了避免這個(gè)問(wèn)題,C++11當(dāng)中提供了一種新枚舉,它的作用域?yàn)轭?,聲明類似這樣:

enum class A {small, big, medium};
enum class B {small, large, xlarge};

和上面的代碼幾乎是一樣的,只不過(guò)多了一個(gè)關(guān)鍵字class,換成struct也是可以的。

當(dāng)我們使用的時(shí)候,需要加上解析運(yùn)算符:

A choice = A::small;
B c = B::large;

另外我們前面說(shuō)過(guò),常規(guī)的枚舉將自動(dòng)轉(zhuǎn)化為整型,比如賦值給int變量或者是用于比較表達(dá)式的時(shí)候。而作用域內(nèi)枚舉不會(huì)隱式地轉(zhuǎn)換類型。

到此這篇關(guān)于C++類常量和類枚舉的文章就介紹到這了,更多相關(guān)C++類常量和類枚舉內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++學(xué)生信息管理系統(tǒng)

    C++學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家想詳細(xì)介紹了C++學(xué)生信息管理系統(tǒng)的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • C語(yǔ)言實(shí)現(xiàn)學(xué)生消費(fèi)管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)學(xué)生消費(fèi)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)學(xué)生消費(fèi)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++實(shí)現(xiàn)日期計(jì)算器詳細(xì)代碼示例

    C++實(shí)現(xiàn)日期計(jì)算器詳細(xì)代碼示例

    這篇文章主要給大家介紹了關(guān)于C++實(shí)現(xiàn)日期計(jì)算器的相關(guān)資料,基于C++編寫的簡(jiǎn)單的日期計(jì)算器,供大家參考,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • C++類的大小介紹

    C++類的大小介紹

    這篇文章主要介紹了C++類的大小,在C++中,結(jié)構(gòu)體和類的唯一區(qū)別就是結(jié)構(gòu)體和類具有不同的默認(rèn)訪問(wèn)控制屬性,下面一起進(jìn)入文章查看詳細(xì)內(nèi)容
    2021-11-11
  • C語(yǔ)言中字符串常用操作總結(jié)

    C語(yǔ)言中字符串常用操作總結(jié)

    C語(yǔ)言是一種非常流行的編程語(yǔ)言,它支持各種數(shù)據(jù)類型,包括整數(shù)、浮點(diǎn)數(shù)、字符和字符串等,本文將介紹?C語(yǔ)言中字符串的相關(guān)知識(shí),包括字符串的定義、初始化、賦值等,需要的可以參考一下
    2023-05-05
  • C++中的模板類繼承和成員訪問(wèn)問(wèn)題

    C++中的模板類繼承和成員訪問(wèn)問(wèn)題

    這篇文章主要介紹了C++中的模板類繼承和成員訪問(wèn)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++移動(dòng)語(yǔ)義介紹與使用講解

    C++移動(dòng)語(yǔ)義介紹與使用講解

    首先,移動(dòng)語(yǔ)義和完美轉(zhuǎn)發(fā)這兩個(gè)概念是在C++的模板編程的基礎(chǔ)上,新增的特性,主要是配合模板來(lái)使用。本篇會(huì)從C++的值類型,到移動(dòng)拷貝與移動(dòng)賦值來(lái)理解移動(dòng)語(yǔ)義與完美轉(zhuǎn)發(fā)
    2022-09-09
  • 一篇文章帶你了解C語(yǔ)言二分查找的簡(jiǎn)單應(yīng)用

    一篇文章帶你了解C語(yǔ)言二分查找的簡(jiǎn)單應(yīng)用

    這篇文章主要介紹了二分查找算法在C語(yǔ)言程序中的使用示例,文中最后提到了使用二分查找法一個(gè)需要注意的地方,需要的朋友可以參考下
    2021-08-08
  • C語(yǔ)言中定義與聲明有哪些區(qū)別

    C語(yǔ)言中定義與聲明有哪些區(qū)別

    在C/C++中有一個(gè)基礎(chǔ)且重要的知識(shí),什么是聲明?什么是定義?他們的區(qū)別是什么?本文將帶你理清其中的區(qū)別
    2022-07-07
  • 詳解C++11中模板的優(yōu)化問(wèn)題

    詳解C++11中模板的優(yōu)化問(wèn)題

    這篇文章主要介紹了C++11中模板的優(yōu)化問(wèn)題,通過(guò)實(shí)例代碼得出結(jié)論,當(dāng)所有模板參數(shù)都有默認(rèn)參數(shù)時(shí),函數(shù)模板的調(diào)用如同一個(gè)普通函數(shù),具體示例代碼跟隨小編一起看看吧
    2021-09-09

最新評(píng)論