類別中的陰影變數:一個難題
此查詢圍繞類別內定義的變數的行為。考慮以下名為Measure 的類別:
<code class="c++">class Measure { int N; double measure_set[]; char nomefile[]; double T; // ... };</code>
目標是實作一個get 方法,將.dat 檔案中的資料讀取到measure_set 陣列中,並將使用者輸入讀取到T 變數中。然而,提供的實作似乎將T值儲存在measure_set[0]中。
理解陰影
在C中,可以聲明具有相同名稱的變數在不同的範圍內。這稱為陰影。編譯器將每個變數與其各自的作用域相關聯,並且在該作用域內,變數的本地定義優先於具有相同名稱的任何其他聲明。
在提供的程式碼中,T 變數被定義為成員Measure 類別的變數並作為 get 方法中的局部變數。當嘗試在方法內檢索 T 成員變數時,它會存取局部變數 debido 來進行遮蔽。
避免遮蔽
要解決此問題,有必要透過對不同作用域中的變數使用唯一的名稱來避免陰影。常見的約定是為成員變數加上適當的識別字前綴,例如「m_」或「this_」。這確保它們與同名的局部變數不同。
例如,以下修改後的代碼對成員變量使用“_m”前綴:
<code class="c++">void Measure::get() { // ... cout << "Insert temperature:" << endl; cin >> m_T; // ... }</code>
其他注意事項
以上是## 陰影如何影響 C 類別中的變數存取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!