25 類的靜態成員函式

2021-09-26 08:43:46 字數 1549 閱讀 2214

1、上個程式未達到需求

隨時可以獲取當前物件的數目(failure)

錯誤原因:上乙個程式如果我們沒有定義物件,那怎麼輸出物件的數目呢?我想到的解決方案是把靜態區域性變數變成公有。這樣可以不用通過物件,直接通過類名就可以直接訪問靜態區域性變數。

分析:程式的確實達到了我們想要的結果,但是test::scount 的值是可以隨意修改的,比如我在main 裡面把它賦值為1000,輸出值就為1000,所以把靜態區域性變數變成公有確實很不安全。

2、問題分析

3、靜態成員函式

class test

static int func2();

};int test::func2()

程式:靜態成員函式

分析:我們可以看到在程式的靜態成員函式宣告裡,static要加,而在程式的靜態成員函式定義裡,static 可以去掉不加。在上面的程式裡我們實現了 通過類名直接訪問公有靜態成員函式的功能,通過物件名直接訪問公有靜態成員函式的功能。但是靜態成員函式是一種特殊的函式,它不能直接訪問 成員變數的值

所以靜態成員函式裡不能直接訪問成員變數。

重新寫需求程式:(結合靜態成員函式)

小結:

簡短概括一下:

普通的成員函式既可以呼叫成員變數和成員函式,又可以呼叫靜態成員變數和靜態成員函式,只不過不能被類名直接呼叫

靜態成員函式除了不能呼叫成員變數和成員函式,其餘都行

25 類的靜態成員變數

目錄 1.成員變數的回顧 2.新需求 程式設計實驗 解決方案嘗試 測試一 普通成員變數 測試二 全域性變數 3.靜態成員變數 3.1在c 中可以定義靜態成員變數 3.2靜態成員變數的特性 程式設計實驗 靜態成員變數的使用 4.小結 include class test test int getcou...

類靜態成員和類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...