1. 程式人生 > >C++中的 靜態成員變數,全域性類物件,單例模式

C++中的 靜態成員變數,全域性類物件,單例模式

前段時間要實習一個充值介面,建立了一個類(就叫類A好了),這個類A要和另外3個類進行互動,3個類對類A修改的資料是對其他類可見的。這種情況我想到了3個方法:

1.static 靜態成員,靜態成員為該類的所有例項所共享,3個類中各自建立一個類A的物件,它們對靜態成員的修改對其他類可見。

2.全域性變數,類A的標頭檔案中新增   extern  classA  g_classA; 原始檔中新增 classA g_classA;   3個類中新增標頭檔案後直接通過g_classA   //這種不推薦

3.單例模式

 

使用單例模式替代全域性變數,3個類對類A的函式訪問都是對類A的唯一例項的資料訪問,修改對其他類自然可見了。單例模式是使用全域性變數的常見替代方法。

static靜態成員的例子如下:

class A
{
public:
    static std::string m_strTestString;
    

};
string A::m_strTestString = "";

class B
{
public:
    void SetValue(const std::string&temp)
    {
        m_Class1.m_strTestString=temp;
    }
    void display()
    {
        cout << m_Class1.m_strTestString << endl;
    }
private:
    A m_Class1;

};
class C
{
public:
    void setvalue(const std::string& temp1)
    {
        m_Class2.m_strTestString=temp1;
    }
private:
    A m_Class2;
};

int main()
{
    B zhc;
    zhc.SetValue("123");
    C ty;
    ty.setvalue("456");
    zhc.display();

}