const用法小注(實時更新)

2021-06-14 19:23:37 字數 1182 閱讀 4971

在函式裡,如果用const修飾形參可以防止輸入引數被無意改動。因此,許多有經驗的程式設計師都會建議新手在能夠使用const的情況下,都盡量使用const。

如:

float grid::clamp(const float x, const float low, const float high) 

1. const函式不能呼叫非const函式:

bool grid::hit(const ray& ray, double& tmin, shaderec& sr) const

在上述用法中,hit函式呼叫了clamp函式,但由於hit函式是const函式,當hit呼叫任何非const的成員函式,編譯器即會報錯,這是為了防止任何可能會改變資料成員的操作發生。正確的做法是將clamp函式宣告為const函式,即:

float grid::clamp(const float x, const float low, const float high)  const

即在clamp函式之後加上const宣告。

2. const函式過載

class student

int getage() const

void setage(int age)

void setage(int age) const

public:

int m_age;

};

在相同引數及相同名字的情況下,const是可以構成函式過載的,但const成員函式不能更改任何非靜態成員變數;

類中二函式都存在的情況下:

a.const物件預設呼叫const成員函式,非const物件預設呼叫非const成員函式;

b.若非const物件想呼叫const成員函式,則需顯式轉化,如(const student&)obj.getage();

c.若const物件想呼叫非const成員函式,同理const_cast(constobj).getage();(注意:constobj要加括號)

類中只有一函式存在的情況下:

a.非const物件可以呼叫const成員函式或非const成員函式;

b.const物件只能呼叫const成員函式,直接呼叫非const函式時編譯器會報錯;

map用法小注

之前看 演算法筆記 並沒真正掌握stl的用法,map在處理一些ccf的題時很有用,小小記錄下 1 字元為主鍵,不同字元對應相同的數字 include include include include include include using namespace std map char int ca...

pyqtchart實時更新

用pyqt做的小專案,其中有個需求是實時更新曲線圖,在這裡記錄下除錯的 pyqt和qt基本相同,可以參照c 版本qt的寫法。pyqtchart的資料可真少呀。搜了好久,最後還是結合c 版的文件和大佬們的部落格做出來這個效果。直接上 class mainwindow qmainwindow,ui ma...

Const與Const的用法

const 是c 中常用的型別修飾符,常型別是指使用型別修飾符const說明的型別,常 型別的變數或物件的值是不能被更新的。const的作用 1 可以定義常量 即const int a 5 a就是乙個被const修飾的常量,它在程式執行期間是無法被改變的!2 保護被修飾的東西 例如乙個函式的首部為v...