溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C++如何避免非常數(shù)全局變量

發(fā)布時間:2021-11-26 15:41:06 來源:億速云 閱讀:292 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“C++如何避免非常數(shù)全局變量”,在日常操作中,相信很多人在C++如何避免非常數(shù)全局變量問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++如何避免非常數(shù)全局變量”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

避免非常數(shù)全局變量

Reason(原因)

非常數(shù)全局變量會隱藏依賴關(guān)系并導(dǎo)致依賴對象不可預(yù)知地被修改。

Example(示例)

struct Data {    // ... lots of stuff ...} data;            // non-const data
void compute()     // don't{    // ... use data ...}
void output()     // don't{    // ... use data ...}

譯者注:全局變量可以被任何代碼看到,也就可能被任何代碼修改。如果變量命名時沒有特殊的規(guī)則,這種問題就會更加難以解決。

Note(注意)

全局常量是有用的。

Note(注意)

針對全局變量的規(guī)則同樣適用于命名空間范圍的變量。

可選項:如果你使用全局(更普遍的情況是命名空間范圍)數(shù)據(jù)來避免拷貝,考慮通過一個const類型的參照進行傳遞。另一個解決方案是將數(shù)據(jù)定義成某些對象的狀態(tài)并將操作定義為成員函數(shù)。

譯者注:第一種情況時,使用const參照的代碼無法改寫全局變量的內(nèi)容,這樣就可以限制對全局變量的修改;第二種情況可以通過成員函數(shù)控制和檢查針對全局數(shù)據(jù)的修改。

警告:小心數(shù)據(jù)競爭。如果兩個線程訪問同一個數(shù)據(jù)(可以是全局的或者或者通過參照傳遞的),就可能出現(xiàn)數(shù)據(jù)競爭。每一個指向可修改數(shù)據(jù)的指針或者引用都可能發(fā)生數(shù)據(jù)競爭。

Note(注意)

你沒有辦法讓不可修改的數(shù)據(jù)發(fā)生數(shù)據(jù)競爭。

Note(注意)

這條準則是“避免”而不是“禁止使用”。當(dāng)然存在(很少)例外情況。例如:cin,cout和cerr等。

譯者注:“避免”可以理解為如果可能就不用。

Enforcement(實施建議)

(簡易)報告所有定義在命名空間范圍的非常數(shù)變量。

到此,關(guān)于“C++如何避免非常數(shù)全局變量”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI