靜態成員函式中不能使用這個指標!
因為靜態成員函式並不具體作用與某個物件!
因此,靜態成員函式的真實的引數的個數,就是程式中寫出的引數個數!
普通成員變數每個物件有各自的乙份,而靜態成員變數一共就乙份,為所有物件共享。
普通成員函式必須具體作用於某個物件,而靜態成員函式並不具體作用於某個物件。
因此成員靜態不需要通過物件就能訪問。
成員靜態變數本質上的英文全域性變數,哪怕乙個物件都不存在,類的靜態成員變數也存在。
設定靜態成員這種機制的目的是將和某些類緊密相關的全域性變數和函式寫到類裡面,看上去像乙個整體,易於維護和理解。
成員靜態函式本質上的英文全域性函式。
sizeof運算子不會計算靜態成員變數。
在靜態成員函式中,不能訪問非靜態成員變數,也不能呼叫非靜態成員函式。
class crectangle
//沒有無參建構函式
};class cengine //引擎類
;class ccar
ccar(int p,int tr,int tw );
};ccar::ccar(int p,int tr,int w):price(p),tyre(tr, w)//一定要在這裡對tyre初始化,因為tyre沒有無參建構函式
;int main()
//ccar::ccar(int p,int tr,int w):price(p),tyre(tr, w)其中p,tr,w可以為函式,變數
封閉類物件生成時,先執行所有物件成員的建構函式(因為封閉類建構函式可能用的到物件成員),然後才執行封閉類的建構函式。
物件成員的構造函式呼叫次序和物件成員在類中的說明次序一致,與它們在成員初始化列表中出現的次序無關。
當封閉類的物件消亡時,先執行封閉類的構構函式。然後再執行成員物件的分構相反。封閉類建構函式和建構函式的呼叫次序相反。
舉例:
class ctyre
~ctyre()
};class cengine
~cengine()
};class ccar
~ccar()
};int main()
輸出結果:
如果不希望某個物件的值被改變,則定義該物件的時候可以在前面加const關鍵字。
類在成員的函式說明後面可以加const的關鍵字,該則成員函式成為常量成員函式。
常量成員函式執行期間,不應修改其所作用的物件。成員常量函式內部不能改變成員變數的值(靜態成員變數除外),也不能呼叫非常量成員函式(靜態成員函式除外)。
class sample ;
sample()
void getvalue() const
};const sample obj;
obj.setvalue (); //常量物件上可以使用常量成員函式
為友元函式和友元類兩種
1)友元函式:乙個類的友元函式可以訪問該類的私有成員
class ccar ; //提前宣告 ccar類,以便後面的cdriver類使用
class cdriver
;class ccar
;void cdriverer::modifycar( ccar * pcar)
int mostexpensivecar( ccar cars,int total)
//求最貴汽車的**
程式設計與演算法三一單元
第一題沒問題 第二題 有點卡殼,主要憑記憶寫出來的,要多練習下 第三題沒問題 第四題沒寫出來 二 填空,使得程式輸出指定結果 include using namespace std 在此處補充你的 getelement int a,int i int main getelement a,1 10 c...
演算法與程式設計
1.寫乙個程式 找出乙個字串中出現次數最多的字元和出現的次數 例如 string s abcdeddss ssaaaa 1.將字串轉換為字元陣列 char c s.tochararray 2.建立陣列 用來裝字元陣列 listlist new arraylist for int i 0 ilist....
程式設計與基礎演算法
演算法 algorithm 是指解題方 而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。乙個演算法的優劣可以用空間複雜度與時間複雜度來衡量。有窮性 finiteness 演算法必須在執行有限個步驟...