const double function()和double function()const;不少人可能將他們兩個混爲一談了,可是兩者並不徹底相同。前者是必須保證返回的值是這個常量(注:變量不可),後者是要求你的函數中不涉及改變類的數據成員的值,能夠進行輸出等,但不可改變數據成員的值。
除了上述關於常函數的論述,還有不少人把靜態成員函數和常函數混爲一談,考試也常常進行相關的考試,強調的是常函數是有this指針的。git
首先:靜態函數是沒有this指針的,由於淺層能夠理解爲this指針就是一個具體的對象,由於靜態函數不屬於具體的對象,故沒有this指針。一樣的靜態數據成員也不屬於對象。關於靜態數據成員,調用其有兩種方式:一種是經過類名::,一種是對象名.形式。同時必須在類外進行初始化。github
對於虛函數,首先須要明白的是爲何要出現虛函數:segmentfault
假設有一個基類,含有成員函數A,同時他的派生類中也從新定義了新的A,且基類中的首部與派生類的首部均相同,這樣會致使派生類的再次定義將基類的A覆蓋了,當咱們在主函數中想調用基類的A的話就須要:派生類對象.基類::A(),很顯然,當程序較複雜時,這樣會下降咱們的效率。
出現:數組
爲了解決上述問題,虛函數應運而生,咱們在想調用基類的函數時,就能夠從新定義一個基類指針,使之指向派生類對象,再次調用A函數,便調用的是基類的函數。不少人可能會說我也能夠不將其定義爲虛函數,可是運用一樣的方法來調用基類的函數! 是的,可是那樣沒有運用多態性。
在這個地方先給出大體的順序:1.基類 2.子對象 3.派生類自身網絡
經過這個例子咱們能夠清楚的發現這個大順序。
更細的:函數
對於子對象之間的構造函數的調用順序:取決於子對象的聲明順序,跟他的初始化順序無關。
基類:測試
取決於在派生類的聲明順序,跟基類的定義順序和在派生類的初始化順序無關。
1.
在這個題中,因爲const在name的前邊,說明這個是要求地址不變,分析bcd:對於B,從新賦值就至關於改變了地址,對於CD兩個運用的動態開闢空間,改變了地址。正確選項A:該選項只是改變了name數組的第三個變量的值,故並無改變數組的地址。故正確。
2.
對比上下兩個題的區別,發現const在此題中的位置發生了改變。他放到了數據類型的前邊,這就會使得要求變爲p指向的變量不能發生改變!this
在拋出異常被捕獲後,程序會繼續進行!以下例:
測試結果:
spa
本文保留全部權利,版權歸河北工業大學夢雲智軟件開發團隊全部。未經團隊及做者事先書面贊成,您不得以任何方式將本文內容進行商業性使用或經過信息網絡傳播本文內容。本文做者:郝澤龍3d