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