C++共享之道:用extern實現原始檔變數與類成員函式的巧妙共享

架构师老卢發表於2024-03-24

概述:在C++中,使用`extern`關鍵字可實現在原始檔之間共享變數與類成員函式。透過宣告變數或類在標頭檔案中,再在一個原始檔中定義,其他原始檔透過`extern`引用,促使模組化、可維護的程式碼組織。

在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在原始檔之間共享變數和類成員函式的方法,有助於實現模組化的程式碼結構。

相關文章