1.過載函式呼叫問題中的列舉型別提公升
1void newf(unsigned char
); 2
void newf(int
); 3 unsigned char uc = 129
; 4 newf(virtual); //
calls newf(int)
5 newf(uc); //
calls newf(unsigned char)
列舉型別 tokens 只有兩個列舉成員, 最大的值為 129。 這個值可以用 unsigned char 型別表示,很多編譯器會將這個列舉型別儲存為 unsigned char 型別。然而,列舉成員 virtual 卻並不是 unsigned char 型別。就算列舉成員的值能儲存在 unsigned char 型別中,列舉成員和列舉型別的值也不會提公升為 unsigned char 型別。
2.「僅當形參是引用或指標時,形參是否為 const 才有影響。」,這是《c++ primer》中的一句話,如果形參是非const引用,這種情況很好理解,不必多說;如果形參是const引用,理解起來要轉個彎,《c++ primer》中的這段話可以輔助理解:「如果傳遞的是非 const 物件,則上述任意一種函式皆可行。非 const 物件既可用於初始化 const 引用,也可用於初始化非 const 引用。但是,將 const 引用初始化為非 const 物件,需通過轉換來實現,而非 const 形參的初始化則是精確匹配。」。有了這段話,下面這兩個過載函式的呼叫就不會混淆:
1 record lookup(account&);2 record lookup(const account&); //
new function
3const account a(0
); 4
account b;
5 lookup(a); //
calls lookup(const account&)
6 lookup(b); //
calls lookup(account&)
1 f(int *);2 f(int *const); //
redeclaration
「此時,const 用於修改指標本身,而不是修飾指標所指向的型別。」
DllMain相關注意事項
1 在dllmain的dll process attach分支中,盡量只呼叫kernel32.dll中的函式。因為其他系統api可能依賴於其他dll,而那些dll有可能還沒有被載入到程序空間中且依賴於當前dllmain所在的dll,這樣會導致迴圈依賴 其實,在使用者程序中呼叫其他系統模組的api一般...
git相關注意事項
git的相關注意事項 git add 新增所有修改到暫存區。git reset head file add之後發現錯誤,撤銷 add的檔案到暫存區。git add file後進行 git commit m 修改某某檔案 後發現錯誤 要撤銷。解決方式 git log 檢視提交到暫存區的 commit ...
Hive相關注意事項
1.load data locall inpath into table xx 如果是本地路徑,其實就是一次put上傳操作 如果路徑是hdfs,其實是一次mv操作 2.建立分割槽表partitioned by 字段不能和表中列的字段重複 3.建立分桶表cluster by 必須是表中的某列的字段 4...