頁的有關跨文件共享常數變量,像這樣C++入門第五版會談60使用extern在文件間共享const時,爲什麼extern需要定義?
//file_1.cc
extern const int bufSize = fcn();
//file_1.h
extern const int bufSize;
當將BUFSIZE定義,什麼是對file_1.cc的extern的目的是什麼?我知道file_1.cc會定義它,但是同一本書的第45頁說,爲變量提供一個初始化器覆蓋了extern,那麼爲什麼在const的定義中必須有extern?
與C不同,C++中的const默認爲內部鏈接,在這種情況下,就好像它已被聲明爲靜態一樣。 extern被要求覆蓋這個。 – 2014-10-10 01:13:03
因此,extern會將變量更改爲外部鏈接,從而允許跨文件共享該變量? – Matt 2014-10-10 01:16:14
是的。另一種方法是僅在不帶外部頭的情況下聲明const。對於一個簡單的const(不是一個類)給定一個文字(例如'const int size = 5;'),這很好。但是,如果頭文件中的常量是從函數初始化的,則將爲包含頭文件的每個源文件再次調用該函數,效率低下。 – 2014-10-10 01:18:05