四句話解決const賦值問題

2021-07-14 15:14:27 字數 1228 閱讀 5689

有修飾自己的const就不能再被賦值,且一定要初始化(reference同樣)

等號右邊修飾自己的const在賦值時會被忽略

指標的型別有const type(不能用指標修改所指內容)和 type(可以)

其中 type型別的指標可以賦值給const type型別,因為這樣做相容,反過來就不行。想想也是,從可以修改指向的內容到不能修改所指範圍變窄了。

注:

修飾自己的const 指的是 限定符const

type 指的是 資料型別,如int等

要注意指標的const int是型別!!千萬不要把const int型別跟限定符const搞混,如果你覺得各種const很混亂就是這裡沒理解好!

在《c++ primier》中採用了頂層const和底層const這兩種說法,我覺得這樣更容易弄混,他把const int中的const斷章取義單獨把const拎出來起了個名字叫底層const。至於頂層const就是指限定符const。

這四句話從《c專家程式設計》中總結出來

書中說到賦值的條件:

兩個運算元都是指向有限定符或無限定符的相容型別的指標,左邊指標所指向的型別必須具有右邊指標所指向型別的全部限定符。

自行檢驗我說的對不對,變數命名還是用了top_level_const 和low_level const這種說法(不然真不知道怎麼命名)

帶有lc字樣的是他是const type型別,因此不能修改所指的內容

帶有tc字樣的是帶有限定符const,因此本身不能被修改

40

void c_r(void)

在函式引數傳遞的時候喜歡加const來確保安全性

int a;

void fun1(const int a){}

fun1(a); //從沒有限定符const變為有限定符const,可以,這很安全

void fun2(const int& r){}

fun2(a);//const int型別確保了r不能夠修改a,可以,這很安全

void fun3(const int* lc_p){}

fun3(&a);//const int*型別確保了lc_p不能修改a,可以,這很安全

void fun4(const int* const lc_tp_p){}

fun4(&a);//即不能通過lc_tp_p修改a,又不能用乙個新的指標賦值給lc_tp_p,可以,這非常安全

受人歡迎的四句話

自古就有 一言興邦,一言喪邦 的明訓,講話確實是一門藝術。如何說話才能受人歡迎?一 為受窘的人說一句解圍的話。助人不只是金錢 勞力 時間上的付出,說話也可以幫助別人。例如,有些人處在尷尬得不知如何 的窘境時,你及時說出一句幫他解圍的話,也是助人的一種。二 為沮喪的人說一句鼓勵的話。西諺雲 言語賦予我...

受人歡迎的四句話

自古就有 一言興邦,一言喪邦 的明訓,講話確實是一門藝術。如何說話才能受人歡迎?一 為受窘的人說一句解圍的話。助人不只是金錢 勞力 時間上的付出,說話也可以幫助別人。例如,有些人處在尷尬得不知如何 的窘境時,你及時說出一句幫他解圍的話,也是助人的一種。二 為沮喪的人說一句鼓勵的話。西諺雲 言語賦予我...

俞敏巨集的四句話

第一句 優秀是一種習慣 這句話是古希臘哲學家亞里斯多德說的。如果說優秀是一種習慣,那麼懶惰也是一種習慣。人出生的時候,除了脾氣會因為天性而有所不同,其他的東西基本都是後天形成的,是家庭影響和教育的結果。所以,我們的一言一行都是日積月累養成的習慣。我們有的人形成了很好的習慣,有的人形成了很壞的習慣。到...