也就是說在C++中,參數列表爲空意味着不接受任何參數。之因此要注意這一點是由於在C語言中,參數列表爲空意味着參數不肯定。二者的語義是有巨大差異的,做爲學了C再學C++的人來講,是須要注意的一點。函數
須要經過static_cast<T*>
語法來顯式轉換,一樣也是跟C中的語法不一致,C語言中是容許void
指針直接賦值給其它類型指針的。一個最好的體現二者區別的例子就是C和C++中對NULL
宏定義的不一樣:指針
#undef NULL #ifdef __cplusplus // C++ #define NULL 0 #else // C #define NULL ((void *)0) #endif
實際上,C++標準中沒有規定char
類型的符號,依賴於具體的實現,這一點和其它的整型類型都不一樣。因此要使用char
類型來進行小整數運算的時候最好明確指定其符號。code
爲了能在頭文件中定義const
全局變量,C++規定const
全局變量默認具備內部連接屬性,若要將其做用域擴大到全工程,那麼須要在定義處手動加上extern
關鍵字:對象
// 這兩行全局變量定義等價 const int MAX = 233; static cosnt int MAX = 233;
在C語言中是須要帶上相應的關鍵字的,在C++中這幾種類型和class
類型同樣,只須要寫類型名便可:作用域
struct Foo { int count; }; // ok Foo foo;
有時候不須要處理函數調用傳進來的一些參數,但若是放置沒有用的參數無論可能會引發編譯警告甚至錯誤,這個時候就須要手動指定忽略參數的處理:io
// 方法一 void func(int n, int m) { // 忽略參數m (void)m; std::cout << n << std::endl; } // 方法二 void func(int n, int) { std::cout << n << std::endl; }