成員函數內定義static變量(不安全,各對象之間共享)


版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/u012317833/article/details/41011997
在成員函數內定義static變量

成員函數內的局部變量可以是static的。如果將成員函數內的某個局部變量定義為靜態變量,該類的所有對象在調用這個成員函數時將共享這個變量。


class C
{
public:
void m();
private:
int x;
};

void C::m()
{
static int s=0;
cout<<++s<<endl;
}

int main()
{
C c1,c2;
c1.m(); //1
c2.m(); //2
c1.m(); //3
return 0;
}

本例在成員函數m中定義了一個static變量s,由於s定義在程序塊內,它擁有程序塊范圍,因此它只能在m內部訪問。每調用m一次,s就會相應地增加一次。又因為m是C的成員函數,所以,C的所有對象都共享這個靜態局部變量。這樣,對m的每一次調用訪問的都是同一個s。相反,對於非靜態局部變量x來說,每個C對象都擁有一個x。所以,在main中第一次調用c1.m()將s從0增加到1,調用c2.m()將s從1增加到2,第二次調用c2.m()將s從2增加到3。
————————————————
版權聲明:本文為CSDN博主「比不了就不比」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u012317833/article/details/41011997


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM