C++(三十二) — 常物件、常成員變數、常成員函式
阿新 • • 發佈:2019-01-04
常量:對於既需要共享、又需要防止改變的資料。在程式執行期間不可改變。
1、常物件
資料成員值在物件的整個生存期內不能改變。在定義時必須初始化,而且不能被更新。
常物件,只能呼叫常成員函式,保證常物件的資料成員不被改變。
class point { public: point(int i, int j) { x = i, y = j; } private: int x, y; }; // 定義常物件 point const a(3, 4); // 定義時,初始化
2、常成員變數
常資料成員,一經初始化就不可改變。建構函式對其進行初始化,只能通過初始化列表。
通常把常資料成員定義為靜態成員,使其成為類的一個常量。
初始化例項:
class circle { public: circle(int r, int i); void print(); private: int ri; const int a; static const float pi; //靜態常資料成員 }; // //靜態常資料成員,類外初始化 const float circle::pi = 3.14; // 常資料成員只能通過初始化列表,獲得初值 // a 為常成員資料,不能把 a=i 寫到建構函式體內,必須通過初始化列表獲取初值// 普通成員也可在初始化列表中賦值 circle::circle(int r, int i) :a(i), ri(r) { } void circle::print() { cout << ri << endl; } void main() { circle x(100, 0); x.print(); system("pause"); return; }
3、常成員函式
class R { public: R(int ra, int rb) { r1 = ra; r2 = rb; }void change(int, int); void print() const; // 定義常成員函式 private: int r1, r2; }; void R::change(int a, int b) { r1 = a; r2 = b; } void R::print() const { cout << r1 << ", " << r2 << endl; } void main() { R a(5, 4); a.print(); // 呼叫常成員函式 print() // 定義常物件,不可呼叫普通函式 change() const R b(20, 25); b.print();// 呼叫常成員函式 print() system("pause"); return; }