a、const成員函數不可以修改類中的數據成員(mutable修飾的除外),編譯時將進行檢查,若const成員函數修改了類的數據成員,則無法通過編譯;
b、聲明爲const的類對象,只能訪問const成員函數,而非const的類對象可以訪問任意的成員函數,包括const成員函數;
c、對於一個類,假如其中含有指針類型的數據成員,該類的const成員函數雖然不能直接修改該指針,但是可以修改該指針指向的內容,從而間接地改變類對象。所以,即使一個聲明爲const的類對象,在調用const成員函數時,也同樣有可能改變自身的屬性。如下例:
#include <iostream>
using namespace std;
class test
{
private:
char *p;
public:
void baddesign(string &str) const
{
p=str.c_str();//錯誤,不能修改p
for(int i=0;i<str.size();i++)
p[i]=str[i];//不好的風格,但不是錯誤的
}
}