C 中的static靜態類 與 代表什麼意思

2021-08-11 14:01:35 字數 2030 閱讀 9677

開始之前先說一下在c++中::是代表什麼意思

表示作用域,和所屬關係

比如class a

int a::test()//表示test是屬於a的

類似的還有其他,就不列舉了

--------------------

比如int a;

void test ()

::是運算子中等級最高的,它分為三種:

1)global scope(全域性作用域符),用法(::name)

2)class scope(類作用域符),用法(class::name)

3)namespace scope(命名空間作用域符),用法(namespace::name)

他們都是左關聯(left-associativity)

他們的作用都是為了更明確的呼叫你想要的變數,如在程式中的某一處你想呼叫全域性變數a,那麼就寫成::a,如果想呼叫class a中的成員變數a,那麼就寫成a::a,另外乙個如果想呼叫namespace std中的cout成員,你就寫成std::cout(相當於using namespace

std;cout)意思是在這裡我想用cout物件是命名空間std中的cout(即就是標準庫裡邊的cout)

他們算是c++中的基礎,如果運用的好的話,你程式的出錯率也許會降很多,

靜態類成員,可以使用類名直接訪問。靜態類成員在類類成員定義前使用static關鍵字標識  。而普通類成員,都是通過new類後的的物件來訪問的,不能通過類名直接訪問

class cbook

在定義靜態資料成員時,通常需要在類體外部對靜態資料成員進行初始化。例如:

unsigned  int cbook :: m_price = 10;//初始化靜態資料成員

對於靜態成員來說,不僅可以通過物件訪問,還可以直接使用類名訪問。例如:

int main(int args ,char* argv)

2)靜態資料成員可以作為成員函式的預設引數

在定義類的成員函式時,可以為成員函式指定預設引數,其引數的預設值也可以是類的靜態資料成員,但是不同的資料成員則不能作為成員函式的預設引數。例如:

class cbook{

public :

static unsigned int m_price;//定義乙個靜態資料成員;

int m_pages; //定義乙個普通資料成員;

void outputinfo(int data = m_price){//定義乙個函式,以靜態資料成員作為預設引數

cout<

static void outputinfo(); //定義類的靜態成員函式

類的靜態成員函式只能訪問類的靜態資料成員,而不能訪問普通的資料成員。例如:

class cbook{

public :

static unsigned int m_price;//定義乙個靜態資料成員

int m_pages; //定義乙個普通資料成員

static void outputinfo(){

cout<

此外,對於靜態成員函式不能定義為const成員函式,即靜態成員函式末尾不能使用const關鍵字。例如,下面的靜態成員函式的定義是非法的

static void outputinfo()const; //錯誤的定義,靜態成員函式末尾不能使用const關鍵字

在定義靜態資料成員函式時,如果函式的實現**處於類體之外,則在函式的實現部分不能再標識static關鍵字。例如:,下面的函式定義是非法的。

static void cbook::outputinfo()//錯誤的函式定義,不能使用static關鍵字

{cout <

void cbook :: outputinfo() //正確的函式定義

{cout<

C 類中的靜態成員函式 static

為了能方便訪問靜態資料成員,c 定義了一種特殊的成員函式來專門負責對靜態資料成員的訪問,這種函式叫做靜態成員函式。靜態成員函式的定義是在非靜態成員函式的定義前加上static關鍵字。它的訪問方式和靜態資料成員相似,也是通過作用域限定符來訪問,語法如下 類名 靜態成員函式名 引數 作為類的成員,靜態成...

c 中的靜態型別 static

static根據上下文語意有兩種含義,一種是在類和結構體內,另一種時類在結構體外。類外的static在鏈結階段是區域性的,它只對它的編譯單元 obj 可見,而類內的static表示這個變數將在類內與所有例項共享 static.cpp static int s variable 5 main.cpp ...

C 類中的靜態成員與靜態方法

c 中,若類的方法前加了static關鍵字,則該方法稱為靜態方法,反之為例項方法。靜態方法為類所有,可以通過物件來使用,也可以通過類來使用。但一般提倡通過類名來使用,因為靜態方法只要定義了類,不必建立類的例項就可使用。靜態方法只能呼叫靜態變數。通過類的例項物件去呼叫 呼叫格式為 物件名.方法名通過類...