C++中数据的共享与保护之——const修饰符

        虽然数据隐藏保证了数据的安全性,但各种形式的数据共享却又不同程度地破坏数据的安全。因此,对于既需要共享又需要防止改变的数据应该声明为常量。因为常在程序运行期间是不可改变的,所以可以有效地保护数据。在第 2章介绍过简单数据型常量。声明对象时也可以用const 进行修饰,称之为常对象。本节介绍常对象、对象的常成员和常引用。常数组和常指针将在第 6 章介绍

常对象

        常对象是这样的对象:它的数据成员值在对象的整个生存期间内不能被改变。也就是说,常对象必须进行初始化,而且不能被更新。声明常对象的语法形式为:

const 类型说明符 对象名;

细节        在声明常对象时,把 const 关键字放在类型名后面也是允许的,不过人们更习惯于把 const 写在前面。例如:

class A(
public:
    A(int i,intj) :x(i),y(j) {}
private:
    int x, y;
};

const A a(3,4);        //a 是常对象,不能被更新

        与基本数据类型的常量相似,常对象的值也是不能被改变的。在 C++ 的语法中,对基本数据类型的常量提供了可靠的保护。如果程序中出现了类似下面这样的语句,编译时是会出错的。也就是说,语法检查时确保了常量不能被赋值。

const int n=10;        //正确,用 10对常量n进行初始化
n=20;                  //错误,不能对常量赋值


注意        在定义一个变量或常量时为它指定初值叫做初始化,而在定义一个变量或常量以后使用赋值运算符修改它的值叫做赋值,请勿将初始化与赋值混淆。

        语法如何保障类类型的常对象的值不被改变呢?改变对象的数据成员值有两个途径:一是通过对象名访问其成员对象,由于常对象的数据成员都被视同为常量,这时语法会限制不能赋值。二是在类的成员函数中改变数据成员的值,然而几乎无法预料和统计哪些成员函数会改变数据成员的值,对此语法只好规定不能通过常对象调用普通的成员函数。可是这样一来,常对象还有什么用呢?它没有任何可用的对外接口。别担心,办法还是有的,在 节中将介绍专门为常对象定义的常成员函数。

以上内容摘自:《C++程序设计基础教程》郑莉 董渊 编著 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值