Static基本用法總結
阿新 • • 發佈:2018-12-29
/*
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();
};
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();
};