1. 程式人生 > >Static基本用法總結

Static基本用法總結

/*
int test::num=120;


int test::getNum()
{
      //return this->num;  //錯誤:靜態成員函式中不能使用‘this’
                // 靜態成員函式沒有this指標
return  num;
}


總結: 靜態成員和靜態成員函式兩種訪問方式
            <1>  類名::靜態成員或靜態成員函式
    <2>  物件::靜態成員或靜態成員函式


cout<<test::getNum()<<endl;   
cout<<test::num<<endl;


test t;
cout<<t.getNum()<<endl;
cout<<t.num<<endl;
      //cout<<t::num<<endl;        錯誤:‘t’is not a class or namespace
      //cout<<t::getNum()<<endl;  錯誤:‘t’is not a class or namespace
 
顯示結果:
120
120
120
120
*/
/*********************************************************************************************************************/
/*
int test::num=120;


int test::getNum()
{
   //i=100;  //錯誤:‘i’在此作用域中尚未宣告  靜態成員函式不能呼叫非靜態成員變數
num=num+20;;
return  num;
}
總結:靜態成員函式可以改變靜態成員變數的值,即靜態成員函式可以呼叫靜態成員變數,
          而靜態成員函式不能直接呼叫非靜態成員變數的值,也不能訪問非靜態成員函式。


cout<<test::num<<endl;
cout<<test::getNum()<<endl;

test t;
cout<<t.num<<endl;
cout<<t.getNum()<<endl;
cout<<t.num<<endl;
顯示結果:
120
140
140
160
160
*/
/********************************************************************************************************************/
/*
int test::sum=0;


test::test(int x,int y)
{
this->x = x;
this->y = y;


sum+= x+y;
}


void test::getSum()
{
num=getNum()+20;
cout<<"sum="<<sum<<endl;
cout<<"num="<<num<<endl;
}
總結:非靜態成員函式可以任意的訪問靜態成員變數和靜態成員函式,
           但是訪問一次,改變了靜態成員變數的值後,靜態成員的值是永久變的。


test t(5,6);
t.getSum();

test t2(1,4);
t2.getSum();
       //test::getSum();   錯誤:沒有物件無法呼叫成員函式‘void test::getSum()’

顯示結果:
sum=11
num=140
sum=16
num=160


*/
/****************************************************************************************************************/
/*
class test
{
private:
int x,y;


public:
static int num;
static int sum;


static int getNum();
void getSum();


};