只有在
同一類定義中的同名成員函式才存在過載關係 ,主要特點是
函式的引數型別和數目有所不同 ,但
不能出現函式引數的個數和型別均相同 ,僅僅依靠返回值型別不同來區分的函式,這和普通函式的過載是完全一致的。另外,過載和成員函式是否是虛函式無關
覆蓋:
在 派生類中覆蓋基類中的同名函式,要求兩個函式的
引數個數、引數型別、返回型別都相同,且基類函式必須是虛函式。
隱藏:
派生類中的函式遮蔽了基類中的同名函式,
2個函式引數相同,但基類函式不是虛函式(
和覆蓋的區別在於基類函式是否是虛函式)。2個函式引數不同,無論基類函式是否是虛函式,基類函式都會被遮蔽(
和過載的區別在於兩個函式不在同一類中)。
int main()
正數原碼、反碼、補碼形式一致。
負數反碼,為其原碼的符號位不變,其他位取反;
負數補碼,是其反碼加1。
舉例8bit有符號型整數:
+34原碼=反碼=補碼:00100010
-34原碼=10100010,反碼=11011101,補碼=11011110
******************************====
不管是在32還是在64位編譯器處理下,int都是4位元組32位,所以整數範圍是-2147483648~2147483647,數值以補碼形式儲存。
【注意】最小負數-2147483648=-2
31並沒有原碼和反碼,只有補碼,由 -0的原碼
1 0...0(31個0) 表示 。
因此:1、~i:對每一位
取反運算。為
01...1(31個1),是正數,補碼即原碼,即2
31-1=2147483647; 2、
-i:對該數求補運算,即【每位】取反運算,再加1。取反,
10...0(31個0)->
01...1(31個1),再加1得
10...0(31個0),
該補碼表現為
最小負數- 2147483648,並沒有原碼和反碼;
3、1-i:補碼形式相加,再推回原碼得十進位制結果。-i(
10...0(31個0) )+(
0 ...1(31個0) )=
10...1(30個0),此為補碼形式,
補碼轉原碼為補碼減1,再非符號位取反,即原碼
1...1(32個1)= -(2
31-1)= - 2147483647
; 4、-1-i
:補碼形式相加,再推回原碼得十進位制結果。即-i(
10...0(31個0) )+(
1 ...1(32個1) )=
01...1(31個1),是正數形式,原碼即補碼,為2
31-1= 2147483647 。
以下哪種語法在c++中是錯誤的?其中x為一c++類
這裡大x表示類,小寫x代表例項。
其實考的是const用法:在x *x這個經典語句中,const插到*前面還是*後面的區別。
ab沒有區別,const在*號前面,都表示*x不可修改。
c中*號前面兩個const,g++編譯器也提示duplicate 'const',所以c的語法是錯的。
d中const在*號後面,表示x指標不可修改。執行 會提示x需要初始化。 const型別的指標宣告時必須初始化
C 公升級知識點總結1
1 for功能增強 功能一 for int i 0 i 3 i cout i endl 功能二 int array 3 for int temp array foreach用法直接陣列內容依次傳給temp cout temp endl 2 auto關鍵字 1 c 中auto 型別推導 2 c語言中a...
c 知識點總結
1 c 中判斷物件為空的幾種方式 1 先了解幾個與空型別相關的關鍵字和物件 null 關鍵字表示不引用任何物件的空引用,它是所有引用型別變數的預設值,在2.0版本之前也就只有引用變數型別可以為null,如 string a null 但在c 2.0版本之後,net也引入了可以為null的值型別,但變...
C 知識點總結
程式 資料結構 演算法.c語言是面向過程的,面向過程就是分析出解決問題的步驟,然後用函式將其實現,使用時依次呼叫.程式 物件 訊息.c 是物件導向的,c 物件導向是將構成問題的事物分解成各個物件,每個物件完成在解決整個問題中的行為.主要特點是類,封裝,繼承,多型等。物件導向的語言具有更好的可擴充套件...