代码如下 :
static const int NUM = 1000;
const int ARRAY_LENGTH = 10;
想知道加不加 static
有什么区别吗 ?
如果我想将这个常量的使用范围限制在只在该文件中使用, 除了放在类中, 还有什么别的办法吗?
怪我咯2017-04-17 14:33:13
1.寫在函數外就是在當前原始檔(確切地說是編譯產生的.o目標文件,因為可見性其實是連結器的概念)可見,是內部連結。不寫的話,就是外部鏈接,是可以在別的原始檔裡用extern引用的這個變數的。
a.cpp
static const int A = 0;
const int B = 0;
b.cpp
extern const int A; // 会发生链接错误
extern const int B; // 正确,多数是写在a.h里然后include
寫在函數裡則是說明是靜態變量,多次呼叫這個函數,都共用同一個內存,而不是棧裡產生新的。
void foo()
{
static const int A = 0; // 多次调用foo,&A不变。
const int B = 0; // 多次调用foo,&B不固定。
}
2.有方法,C++推薦用匿名空間取代static,讓變數在本文件內可見。
namespace {
const int MAX_BUFFER_SIZE=200;
}