關鍵字const:指定用其聲明的內容保持不變
1. 標識變量:代替#define來聲明常量
const doble PI = 3.14159;
2. 標識方法:標識類方法,可以防止方法修改類中不可變的數據成員
// class.h
class A
{
public:
int getValue() const;
private:
int key;
};
// class.cpp
int getValue() const
{
return key;
}
3. const應用於緊挨着位於其左側的間接層
int const* const ip = NULL;
從左到右來看,第一個const緊挨着int的右側,因此它應用於ip指向的int,即不能改變ip指向的值。第二個const位於星號的右側,因此它應用於指向int的指針,也就是變量ip,即不能修改ip自身(指針)。
存在一個例外:const位於最前面
關鍵字static
1. static數據成員和方法:在類中表示只存在一個副本,在類層次上,而非對象層次
2. static連接:用於聲明內部連接,對應的即是extern,外部鏈接
// A.cpp
void find();
int main()
{
find();
return 0;
}
// B.cpp
static void find();
void find()
{
cout << "finding ..." << endl;
}
連接時會出錯,因爲find定義只在B文件中使用
3. 函數中的static變量:創建局部變量,即靜態變量