C++:三

  对于共享数据的保护,我们可以使用常量,在使用数据的同时也防止了数据被修改,即可有效的保护数据。

常对象

  常对象必须在定义对象时就使用“const”关键字将指定对象命名为常对象。常对象的数据成员值在对象生存的期间内不能被改变。

  常对象中的数据成员为常变量且必须要有初始值,如

Time const t1(12,34,36); //定义t1为常对象
//或者写为 const Time t1(12,34,36);
//两种写法都是正确的。

也就是说常对象必须初始化且不能被更新

例如:



常成员函数

  同样的,使用关键字“const”修饰的函数为常成员函数。

使用为下:

void print() const;//类型说明符  函数名  const;

常成员函数可以访问常对象中的数据成员,但仍然不允许修改常对象中数据成员的值。const是函数类型的一部分,在声明函数和定义函数都要有const关键字,在调用时不必加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();
const R b(20, 52);
b.print(); return 0;
}
输出结果为:
5;4
20;52

在此基础上进行对于const b中的值无法修改的实验,在原有函数中加入change函数,用于改变r1,r2的值,具体代码如下:

#include <iostream>
using namespace std; class R
{
public:
R(int r1, int r2) :r1(r1), r2(r2){}
void print();
void print() const;
void change();
private:
int r1,r2;
}; void R::print()
{
cout << r1 << ";" << r2 << endl;
}
void R::print() const
{
cout << r1 << ";" << r2 << endl;
}
void R::change()
{
r1 = r1 + 1;
r2 = r2 + 1;
cout << r1 << ";"<<r2 << endl;
} int main()
{
R a(5,4);
a.print();
const R b(20, 52);
b.print();
a.change();
return 0;
}
运行结果为:
5;4
20;52
6;5

证明change函数将a中的值成功改变,然后将main函数中的a.change();语句改为b.change();

这时编译器报错:

证明成立

最新文章

  1. Markdown语法 中文版
  2. JavaScript的前世今生
  3. ASP.NET MVC Ajax.ActionLink 简单用法
  4. 套题 codeforces 361
  5. crawler:简要了解一下PhantomJS
  6. vim和tmux主题颜色不一致问题
  7. nosql数据库比较
  8. Linux的三种特殊权限
  9. C#如何转换2位数字表示的年
  10. [置顶] Android Journal
  11. Hadoop之Pig安装
  12. SetThreadAffinityMask设置线程亲缘性
  13. mysql添加mcafee 审计插件
  14. jquery判空 string类型的日期比较大小
  15. Apex 中的自定义迭代器
  16. RabbitMQ的Java API编程
  17. oracle性能优化之awr分析
  18. hdoj:2050
  19. linux环境如何配置repo
  20. linux 新建用户、用户组 以及为新用户分配权限的基本操作

热门文章

  1. Leetcode463.Island Perimeter岛屿的周长
  2. CodeForces - 627A
  3. 微信网页授权demo2
  4. SQL 约束和表修改语句
  5. window 导入sql 防止乱码
  6. 一探前端开发中的JS调试技巧(转)
  7. PuTTy linux下tomcat服务的相关命令
  8. java list转换json格式
  9. solr高亮及摘要
  10. 【并查集模板】 【洛谷P2978】 【USACO10JAN】下午茶时间