3-C++程序的结构1.4

共享数据的保护

对于既需要共享、又需要防止改变的数据应该声明为常量。

1、常引用

如果在声明引用时用const修饰,被声明的引用就是常引用。常引用所引用的对象不能被更新。声明形式如下:

const 类型说明符 &引用名;

2、常对象

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

类名 const 对象名;

3、用const修饰的类成员

a、常成员函数

使用const关键字修饰的函数为常成员函数,其格式如下:

类型说明符  函数名(参数表) const;

注意:

1)const是函数类型的一个组成部分,因此在函数定义部分也要带const关键字。

2)常成员函数不能更新对象的数据成员,也不能调用该类中没有const修饰的成员函数。

3)如果将一个对象说明为常对象,则通过该 常对象只能调用它的常才成员函数,而不能调用其他成员函数。

4)const关键字可以用于对重载函数的区分。

#include<iostream>
using namespace std;
class R
{
public:
R(int r1,int r2){R1=r1;R2=r2;}
void print();
void print() const;
private:
int R1,R2;
};
void R::print()
{
cout<<R1<<";"<<R2<<endl;
}
void R::print() const
{
cout<<R1<<";"<<R2<<endl;
}
int main()
{
R a(5,4);
a.print();//调用void print()
const R b(20,52);
b.print();//调用void print() const
return 0;
}

b、常数据成员

如果一个类中说明了常数据成员,那么任何函数中都不能对该成员赋值。构造函数对该数据成员进行初始化,就只能通过初始化列表。

 

posted on   gary_123  阅读(444)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示