C++疑難問題:const/static

關鍵字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變量:創建局部變量,即靜態變量


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章