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();
}