static和const的使用

2021-09-01 15:05:29 字數 1741 閱讀 8105

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的成員是屬於類的,是不屬於任何物件例項,因為靜態成員是在類 第一次載入的時候就建立的,所以在類的外部不需要物件而使用類名就...