1、 const在C中是隻讀變量,在C++中是常量,c++編譯器會爲const常量新增一個符號表,防止通過地址修改這個const常量,而C編譯器可以通過地址修改const修飾的值
2、 const修飾指針常量,放在*號的左邊是修飾指針所指向的內容,放在*號右邊是修飾指針本身
const int *a;//修飾指針所指向的內容,即這個指針指向的內容不可變
int* const a;//修飾指針,即a不可變
3、當函數傳入的不需要修改時,我們應該用const修飾這個參數
char *strcpy(char *des, const char *source)
{
char *tmp = des;
assert((des != NULL) && (source != NULL));
while ((*des++ = *source++) != '\0');
return tmp;
}
4、當一個類的成員函數被聲明爲const時,則這個成員函數不能修改類的數據成員,可以通過對類裏面的數據成員加上mutable修飾,就可以修改該數據成員
class TestConst
{
public:
TestConst(int i);
~TestConst();
int incr() const;
int decr();
private:
mutable int m_Count;//加mutable修飾
};
TestConst::TestConst(int i) : m_Count(i)
{
}
TestConst::~TestConst()
{
}
int TestConst::incr() const//類的數據成員需要加mutable修飾
{
return ++m_Count;
}
int TestConst::decr()
{
return --m_Count;
}