C++中const的一些總結
阿新 • • 發佈:2019-01-22
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:- const Rational operator*(const Rational& lhs, const Rational& rhs)
- {
- return Rational(lhs.numerator() * rhs.numerator(),
- lhs.denominator() * rhs.denominator());
- }
- //返回值用const修飾可以防止允許這樣的操作發生:
- Rational a,b;
- Radional c;
- (a*b) = c;