1. 程式人生 > >C++中const的一些總結

C++中const的一些總結

1.const常量代替#define巨集定義

const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查。而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換可能會產生意料不到的錯誤。(上面這段話出自《高質量C++程式設計指南》)

2.const 與指標

常量指標   const int *p  <=> int const *p;
指標常量   int *const p = &a;//必須初始化

3.物件中的常量

const 資料成員的初始化只能在類建構函式的初始化表中進行;
static const 型別的常量在全域性中賦值;
(整個類的常量是無法通過const實現的,因為初始化列表的賦值每次都可能會改變,解決的方法是建立列舉型別)

4.const常函式 和常物件

常函式只能以讀的方式訪問資料成員,常物件只能呼叫常函式。

5.常引用

拷貝建構函式的形參列表就是常引用的一個例子,不能通過物件的常引用改變物件的資料。 

6.修飾返回值的const

Code:
  1. const Rational operator*(const Rational& lhs, const Rational& rhs)    
  2. {    
  3. return Rational(lhs.numerator() * rhs.numerator(),    
  4. lhs.denominator() * rhs.denominator());    
  5. }    
  6. //返回值用const修飾可以防止允許這樣的操作發生:
  7. Rational a,b;    
  8. Radional c;    
  9. (a*b) = c;