static關鍵字用法
阿新 • • 發佈:2019-01-30
C++中
簡介
C#與C++的static有兩種用法:面向過程程式設計中的static和面向物件程式設計中的static。前者應用於普通變數和函式,不涉及類;後者主要說明static在類中的作用。
面向過程的static
靜態全域性變數 在全域性變數前,加上關鍵字static,該變數就被定義成為一個靜態全域性變數。我們先舉一個靜態全域性變數的例子,如下: ?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//Example1
#include<iostream.h>
voidfn(); //宣告函式
staticintn; //宣告靜態全域性變數
voidmain() {
n=20; //為n賦初值
cout<<n<<endl; //輸出n的值
fn(); //呼叫fn函式
}
voidfn()
{
n++; //n的值自加一(n=n+1)
cout<<n<<endl; //輸出n的值
}
|
int n; //定義全域性變數 程式照樣正常執行。 的確,定義全域性變數就可以實現變數在檔案中的共享,但定義靜態全域性變數還有以下好處: 靜態
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//Example2
//File1第一個程式碼檔案的程式碼
#include<iostream.h>
voidfn(); //宣告fn函式
staticintn; //定義靜態全域性變數
voidmain()
{
n=20;
cout<<n<<endl;
fn();
}
//File2第二個程式碼檔案的程式碼
#include<iostream.h>
externintn;
voidfn()
{
n++;
cout<<n<<endl;
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//Example3
#include<iostream.h>
voidfn();
voidmain()
{
fn();
fn();
fn();}
voidfn()
{
staticintn=10;
cout<<n<<endl;
n++;
}
|
1 2 3 4 5 6 7 8 9 10 11 12 |
//Example4
#include<iostream.h>
staticvoidfn(); //宣告靜態函式
voidmain()
{
fn();
}
voidfn() //定義靜態函式
{
intn=10;
cout<<n<<endl;
}
|
面向物件的static
(類中的static關鍵字) 靜態資料成員 在類內資料成員的宣告前加上關鍵字static,該資料成員就是類內的靜態資料成員。先舉一個靜態資料成員的例子。 ?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
//Example5
#include<iostream.h>
classMyclass
{
public :Myclass(inta,intb,intc);
voidGetSum();
private :inta,b,c;
staticintSum; //宣告靜態資料成員
};
intMyclass::Sum=0; //定義並初始化靜態資料成員
Myclass::Myclass(inta,intb,intc)
{
this ->a=a;
this ->b=b;
this ->c=c;
Sum+=a+b+c;
}
voidMyclass::GetSum()
{
cout<< "Sum=" <<Sum<<endl;
}
voidmain()
{
MyclassM(1,2,3);
M.GetSum();
MyclassN(4,5,6);
N.GetSum()、
M.GetSum();
}
|