c++公用数据的保护

C++中的const关键字可用于保护共享数据,防止意外修改。常对象禁止通过成员函数修改数据成员,常数据成员只能在初始化列表中设置,常成员函数允许访问但不修改数据,指向对象的常指针和指向常对象的指针则规定了指针及所指对象的可变性。这些用法有助于提高代码的稳定性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++虽然采取了不少有效的措施(设private保护)以增加数据的安全性,但是有些数据却往往是共享的,如实参与形参,变量与引用,数据及其指针等,人们可以在不同的场合通过不同的途径访问同一个数据对象。有时在无意之中的误操作会改变有关数据的状况,而这是人们所不希望出现的。既要使得数据能在一定范围内共享,又要保证它不被任意修改,这时可以使用const,即把有关的数据定义为常量。——引自《c++程序设计,谭浩强》

1、常对象(为了防止成员函数修改常对象中数据成员的值)

类名 const   对象名[(实参列表)]    或  const  类名   对象名[(实参列表)]

a. 定义常对象时,必须对数据成员进行赋值,如   const Time t(12,13,35);

b. 常对象不能调用非const型的成员函数(除了由系统自动调用的隐式的构造函数和析构函数);

c. 常对象只有调用const型成员函数才能访问数据成员,但此时仍然不能修改常对象中数据成员的值,如需修改将数据成员声明为mutable;

2、常数据成员

a. 只能通过参数初始化列表对常数据成员进行初始化

3、常成员函数

                                
数据成员非const成员函数const成员函数
非const数据成员可以引用,可以改变值可以引用,不可以改变值
const数据成员可以引用,不可以改变值可以引用,不可以改变值
const对象的数据成员不可以引用,不可以改变值可以引用,不可以改变值


4、指向对象的常指针

类名 * const 指针变量名=对象地址,它在定义时就必须对其初始化, 如Time * const  p=&t;        const在 * 号的右边,值可变,指针所指对象不可变。

p=&tt;   //不合法,指针所指对象不可变4

                (*p).hour=12;  //合法,值可变

5、指向常对象的指针变量

const  类名 * 指针变量名   const在 * 号的左边,值不可变,指针所指对象可变。

char c='a';

const char *p;

p=&c;      //合法,p指针所指对象可以改变

*p=‘b’;   //不合法,*p值不能改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值