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

猜你喜欢

转载自www.cnblogs.com/eilearn/p/10218454.html
今日推荐