C++:static類


static自我理解

static使得數據成員或者函數生命周期為整個文件所在程序的生命周期, 在C中還可以用它避免被其它文件使用為外部成員

static類

明確:類的靜態數據成員它被所有類對象共享,但它是屬於類的,而不是類的對象的

定義靜態成員:static只出現在類內部的聲明語句中

靜態成員函數在類的內部與外部均可以定義(只需要在函數聲明前加上static)

class a1{
....
static void func1();
};
void  a1::func1(){...}


因為靜態數據成員不屬於類的任何一個對象,這意味着它們不是有類的構造函數初始化的,必須在類的外部
定義與初始化每個靜態數據成員且只能定義一次,此時可以無視它是否是private或者public,但定義完成后將不行

並且最好與其它非內聯函數的定義放在一個文件下

類內初始化方法:

我們可以為靜態成員提供const 整數類型 類內初始值,不過要求靜態成員必須是字面值類型的constexpr

eg: static constexpr int period = 30;

靜態成員能用於某些場景:

靜態數據成員可以是不完全類型:
eg:

class Bar{
    public:...
    private:
    static Bar mem1;  //OK
    Bar *mem2; //OK
    Bar mem3; //ERROR
};

我們可以使用靜態成員作為默認實參
eg:

class Screen{
public:
Screen & clear(char = bkground)
private:
  static const char bkground;
};


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM