(二十五)靜態(tài)成員

static定義全局變量

//Object.h
class Object
{
public:
    static int number;
};

//Object.cpp
#include "Object.h"
int Object::number = 1;

//main.cpp
#include<stdio.h>
#include "Object.h"
int main()
{
    Object::number = 2;
    printf("%d\n",Object::number);
    return 0;
}
  • static變量的幾個要素
  • 變量聲明放在類體(Object.h)大括號內(nèi),不能加初始值
  • 變量定義放在類體之外
//Object.cpp
#include "Object.h"
int Object::number = 1;
  • 在main函數(shù)中使用,和使用普通變量一樣,區(qū)別是要加上Object::前綴而已
int main()
{
    Object::number = 2;
}
  • static函數(shù)的幾個要素和變量要素相同

與普通成員的區(qū)別

  • static變量不屬于這個類
class Object
{
public:
    int a;
public:
    static int b;
};

Object::a = 1;
Object::b = 2;

sizeof(Object)的值為4,因為它包含一個成員變量a,而b則不計入總大小

  • static函數(shù)里沒有this指針,下列代碼是不正確的!
class Object
{
public:
    int a;
public:
    static void Set()
    {
        this->s = 1;
    }
};

static語法的特點

  • 受public/private限制
//Object.h
class Object
{
public:
    void call();
private:
    static void Test();
};

//Object.cpp
#include "Object.h"
void Object::Test()
{
    printf("...");
}
void Object::Call()
{
    Test(); //從內(nèi)部調(diào)用的時候,Object::可以忽略,加上也行
    //Object::Test();
}

//main.cpp
#include "Object.h"
int main()
{
    //Object::Test;   錯誤!由于是private,不允許被外部調(diào)用
    Object obj; 
    Obj.Call(); //可以通過調(diào)用Call間接調(diào)用Test
}
  • 可以自由訪問類的其他成員(普通的全局函數(shù)無法訪問類的私有成員)
//Object.h
class Object
{
private:
    void DoSomething();
    int x,y;
public:
    static void Test(Object* obj); 
};

//Object.cpp
//這里要賦給x,y值,由于Object沒有this指針,所以只能顯式地傳入一個對象
void Object::Test(Object* obj)
{
    obj->x = 1;
    obj->y = 2;
    obj->DoSomething();
}
void Object::DoSomething
{
    printf("...");
}

//main.cpp

Object obj;
Object::Test(&obj);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.C和C++的區(qū)別?C++的特性?面向?qū)ο缶幊痰暮锰帲?答:c++在c的基礎(chǔ)上增添類,C是一個結(jié)構(gòu)化語言,它的重...
    杰倫哎呦哎呦閱讀 10,007評論 0 45
  • 有人說:“書是階梯,書是船只,書是良藥,書是營養(yǎng),書是智慧,書是老師?!睍?,對于人類的重要性,怎樣評價,都不為過。...
    清酒無歡閱讀 394評論 0 0
  • 以下全文來自圖說區(qū)塊鏈。因為不會用自己的語言方式來說明概念,所以全部都是抄送全文的。這讓我明顯感到只有深入理解一個...
    徐偉_1226閱讀 457評論 0 0
  • 手機被人們現(xiàn)在形容成人們離不開的大煙! 打車我用的手機叫的滴滴! 車一來,坐車上我就開始玩游戲,司機現(xiàn)在也不閑著了...
    火龍鳥閱讀 428評論 0 0
  • 1不開心的時候,我喜歡一個人走路,因為你會感覺煩惱被甩在腦后。 2你別嫌棄我走得快,我是在試探,你前面的路應(yīng)該很安...
    kotlon閱讀 296評論 0 0

友情鏈接更多精彩內(nèi)容