在C++中,extern關鍵字可用於在原始檔之間共享變數。它告訴編譯器某個變數的宣告在其他原始檔中,其定義在當前原始檔之外。以下是基礎和高階功能的示例:
基礎功能:
示例原始碼:
// 檔案: variable.h
#pragma once
// 在標頭檔案中宣告變數,不進行定義
extern int sharedVariable;
// 檔案: file1.cpp
#include "variable.h"
// 在原始檔中定義變數
int sharedVariable = 42;
// 檔案: file2.cpp
#include <iostream>
#include "variable.h"
// 在另一個原始檔中使用共享變數
extern int sharedVariable;
int main() {
std::cout << "共享變數的值:" << sharedVariable << std::endl;
return 0;
}
在這個示例中,variable.h標頭檔案宣告瞭sharedVariable,而file1.cpp原始檔定義了這個變數。在file2.cpp中,透過extern關鍵字引用了sharedVariable,並列印了其值。
高階功能:
示例原始碼:
// 檔案: shared.h
#pragma once
class SharedClass {
public:
void DisplayMessage();
};
// 檔案: file1.cpp
#include "shared.h"
#include <iostream>
// 定義類的成員函式
void SharedClass::DisplayMessage() {
std::cout << "Hello from SharedClass!" << std::endl;
}
// 檔案: file2.cpp
#include "shared.h"
int main() {
// 引用已定義的類成員函式
SharedClass sharedObject;
sharedObject.DisplayMessage();
return 0;
}
在這個示例中,shared.h標頭檔案宣告瞭SharedClass類,並在file1.cpp原始檔中定義了它的成員函式。然後,在file2.cpp中使用了SharedClass,並呼叫了它的成員函式。
這兩個示例展示了使用extern在原始檔之間共享變數和類成員函式的方法,有助於實現模組化的程式碼結構。