static
檔案域+位置域(區域性,類)
在乙個類中宣告了,在類外定義,static變數定義時所在的檔案,就構成了該變數的作用範圍。
乙個類的static變數,如果在標頭檔案中定義,
多個其他檔案include這個檔案的時候,就會使得這個static有多個實體。
也就是乙個類定義了多個static變數,然後就會報錯!
因為這個變數的作用域是由檔案,類兩者確定的,通過檔案那一關,卻沒有通過類那一關。
所以類的static變數一般在類的定義檔案cpp中定義,即初始化。
t.h
#ifndef _zjjtt_
#define _zjjtt_
#include /*
one include one instance!
*/static int mstatic = 0;
class a
};/*
therefore definition should be in the cpp file
int a::mclass;
*//*
c.o:(.bss+0x0): multiple definition of `mglobal'
b.o:(.bss+0x0): first defined here
collect2: ld returned 1 exit status
int mglobal;
*/void foo();
#endif
#include "t.h"
#include int main()
#include "t.h"
#include void foo()
b.o: b.cpp執行結果c.o: c.cpp
all: b.o c.o
g++ $^ -o a.out
clean:
rm *.o a.out -rf
b.cpp:00600a54
c.cpp:00600a5c
infunc:00600a58
infunc:00600a58
const
const type * const fun(const type * const) const
這個情況也夠多的,我們來看看每個的用法。
比較特別的是後面的const,作用在成員函式時,表示不可改變類中成員變數。
class foo
};
type * const ptr; //ptr的值不可改變
const type * ptr; //ptr指向的內容不可改變
type * const 一般不作為返回值的型別,因為它可以說跟直接type * 的效果是一樣的。
當const作用在非指標的型別上時,type const 和const type是一回事。
const type一般不作為函式返回值的,因為沒意義。但是const type &就比較多用在返回值了,
例如複製函式(==)等。
static const和const static作用的最後效果是一樣的。
在類中,類外定義都可以。除了有常量性質外其他跟static一樣。
在不同編譯器可能對於它們的處理過程可能不一樣。
const和static的使用
const和static的使用 使用const。這一點在很多經典的關於c 和c 的書籍中是必談的要點。在 exceptional c 一書中,對這點有很精彩的描述,現摘錄如下 沒有正確的安全意識的槍手在世界上是不可能活的很長的。const 觀念不正確的程式設計師也是一樣和沒有時間戴緊帽子的正確,沒有...
const和static的區別
const和static的區別 一 const 1.static 區域性變數 將乙個變數宣告為函式的區域性變數,那麼這個區域性變數在函式執行完成之後不會被釋放,而是繼續保留在記憶體中 2.static 全域性變數 表示乙個變數在當前檔案的全域性內可訪問 3.static 函式 表示乙個函式只能在當前...
static和const關鍵字的使用
header content type text html charset utf 8 static和const關鍵字的使用 static成員能夠限制外部的訪問,因為static的成員是屬於類的,是不屬於任何物件例項,因為靜態成員是在類 第一次載入的時候就建立的,所以在類的外部不需要物件而使用類名就...