c++靜態部分變量和靜態函數示例。本站提示廣大學習愛好者:(c++靜態部分變量和靜態函數示例)文章只能為提供參考,不一定能成為您想要的結果。以下是c++靜態部分變量和靜態函數示例正文
在函數體內界說了一個變量,每當法式運轉到該語句時都邑給該部分變量分派棧內存。但跟著法式加入函數體,體系就會發出棧內存,部分變量也響應掉效。但有的時刻我們須要在兩次挪用之間對變量的值停止保留。平日的設法主意是界說一個全局變量來完成。然則如許一來,變量曾經不再屬於函數自己了,不再僅受函數的掌握,給法式的保護帶來未便。靜態部分變量正好可以處理這個成績。靜態部分變量保留在全局數據區,而不是保留在棧中,每次的值堅持到下一次挪用,直到下次賦新值。該變量在全局數據區內分派內存;靜態部分變量在法式履行到該對象的聲明處時被初次初始化,即今後的函數挪用不再停止初始化(這一點異常的主要);靜態部分變量普通在聲明處初始化,假如沒有顯式初始化,會被法式主動初始化為0;它一直駐留在全局數據區,直到法式運轉停止。但其感化域為部分感化域,當界說它的函數或語句塊停止時,其感化域隨之停止;靜態函數重要是用來拜訪靜態成員,不克不及直接拜訪類的非靜態成員;靜態成員函數重要為了挪用便利,不須要生成對象就可以挪用。好比
class X
{
public:
void MethodA();
static void MethodB();
}
此時MethodB可以直接挪用,X::MethodB();
而MethodA必需在師長教師成類對象以後能力夠被挪用,X x; x.MethodA();
//Example 3
#include <iostream.h>
void fn();
void main() {
fn(); fn(); fn();
}
void fn() {
static int n=10; //僅在首次挪用它的時刻被初始化,第二次挪用的時刻這句話就被疏忽
cout<<n<<endl;
n++;
}