變量聲明和變量是有區別的
extern int i; //只是聲明i而非定義i int j; //聲明而且還定義了j
任何一個顯式初始化的聲明都將成為定義,而不管有沒有extern,extern語句一旦變量賦予了初始值就變成了定義。
extern double pi=3.1415926; //定義
?
state.cpp
#include "stdafx.h" #include "state.h"/*1.如果變量放在state.h頭文件,則無法被外部文件使用extern關鍵字使用2.如果cpp文件和h文件都包含相同的變量,則外部文件使用extern關鍵字時,無法獲得該變量的值 */ int x; state::state() {x = 10; }state::~state() { }
?
C++Starter.cpp
// C++Starter.cpp : 定義控制臺應用程序的入口點。 // #include "stdafx.h" #include "iostream" #include <ctime> #include "state.h" using namespace std;extern int x; int main() {state aa; //如果不初始化state類,則變量x的值為0cout << "x=" << x << endl;return 0; }
?