預處理、const、static與sizeof-C++中const有什麽作用(至少說出3個)
阿新 • • 發佈:2017-10-08
什麽 需要 char 修改 抽象 ons 時間 數據 amp
1:作用如下:
(1)const用於定義常量:const定義的常量編譯器可以對其進行數據靜態類型安全檢查。
(2)const修飾函數形式的參數:當輸入參數為用戶自定義類型和抽象數據類型時,應該將“值傳遞”改為“const&傳遞”,可以提高效率。比較下面兩段代碼:
void fun(A a); void fun(A const &a);
第一個函數效率低。函數體內產生A類型的臨時對象用於復制參數a,臨時對象的構造、復制、析構過程都將消耗時間。而第二個函數提高了效率。用“引用傳遞”不需要產生臨時對象,節省了臨時對象的構造、復制、析構過程消耗的時間。但光用引用有可能改變a,所以加const。
(3)const修飾函數的返回值:如給“指針傳遞”的函數返回值加const,則返回值不能被直接修改,且該返回值只能被賦值給加const修飾的同類型指針。例如:
const char *GetChar(void){}; char *ch=GetChar();//錯誤 const char *ch=GetChar();//正確
(4)const修飾類的成員函數(函數定義體):任何不會修改數據成員的函數都應用const修飾,這樣,當不小心修改了數據成員或調用了非const成員函數時,編譯器就會報錯。const修飾類的成員函數形式為:
int GetCount(void) const;
預處理、const、static與sizeof-C++中const有什麽作用(至少說出3個)