1. 程式人生 > >C++(三十二) — 常物件、常成員變數、常成員函式

C++(三十二) — 常物件、常成員變數、常成員函式

  常量:對於既需要共享、又需要防止改變的資料。在程式執行期間不可改變。

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; }