如何实现数据共享而不更改其值
2012-08-23 18:26
260 查看
有些数据需要共享但又不允许更改其值,我们需要将其声明为常量。常量包括:常引用、常对象、对象的常指针、常数组、常指针等。与常量概念相关的还有类的常成员函数。
我们常见到的是常引用做为函数的形参,这样可以避免实参被修改。因为常引用所引用的对象不能被修改。
常对象,其实是指对象在自己的生存期内,其数据成员不会被修改。声明常对象时,必须对其初始化。修改普通对象的数据成员的方式有两种,一种是通过对象名访问其公有数据成员并修改其值的方式;另一种是类的成员函数修改其数据成员的方式。这两种方式对修改常对象的数据成员都是无效的:常对象的数据成员不能被修改,而且常对象不能调用普通的成员函数,常对象只能调用类的常成员函数。
做为常对象与外界的接口,常成员函数有几点特性需要注意:在声明和定义常成员函数时都要带上const关键字(这是因为,如有必要,const关键字可以参与区别重载函数。);常成员函数不能修改对象的数据成员,也不能访问非const关键字修饰的成员函数。
类的常数据成员,同其他常量一样,任何函数都不能对其赋值。如果一个类包含常数据成员,那么构造函数应该采用初始化列表的方式,对常数据成员初始化。特别需要注意的是,类的静态常数据成员初始化的方式同一般常数据成员不同,它们的初始化,是通过类名直接访问赋值实现的,形式为:const 数据类型 类名::标识符=值;
我们常见到的是常引用做为函数的形参,这样可以避免实参被修改。因为常引用所引用的对象不能被修改。
常对象,其实是指对象在自己的生存期内,其数据成员不会被修改。声明常对象时,必须对其初始化。修改普通对象的数据成员的方式有两种,一种是通过对象名访问其公有数据成员并修改其值的方式;另一种是类的成员函数修改其数据成员的方式。这两种方式对修改常对象的数据成员都是无效的:常对象的数据成员不能被修改,而且常对象不能调用普通的成员函数,常对象只能调用类的常成员函数。
做为常对象与外界的接口,常成员函数有几点特性需要注意:在声明和定义常成员函数时都要带上const关键字(这是因为,如有必要,const关键字可以参与区别重载函数。);常成员函数不能修改对象的数据成员,也不能访问非const关键字修饰的成员函数。
类的常数据成员,同其他常量一样,任何函数都不能对其赋值。如果一个类包含常数据成员,那么构造函数应该采用初始化列表的方式,对常数据成员初始化。特别需要注意的是,类的静态常数据成员初始化的方式同一般常数据成员不同,它们的初始化,是通过类名直接访问赋值实现的,形式为:const 数据类型 类名::标识符=值;
相关文章推荐
- ContentProvider是如何实现数据共享的。
- 请介绍下ContentProvider是如何实现数据共享的?
- 黑马程序员---java中如何实现线程范围内共享数据
- 如何实现虚拟机(VirtualBox)中的Ubuntu与Windows XP间的数据共享
- 多个session共享数据如何实现 - PHP进阶
- android面试题:请介绍下ContentProvider是如何实现数据共享的
- mysql如何更改数据库名(一键实现mysql改数据库名)
- 深度解读|如何实现政务大数据开放与共享
- [Unity&GameSparks]如何实现玩家之间的数据共享
- 如何用eclipse将数据库oracle数据相连接,实现查询数据库中的信息以及更改添加表中内容
- Java Web 中application(应用级) session(会话级) request(请求级)如何实现数据共享
- 使用laravel开发网站时,如何实现前端导航栏共享数据二种简单的方法
- 在一个程序中需要用到全局变量(在多个class之间共享数据),请问如何定义具有这种功能的变量?或者是否有其他的方法解决多个class之间的数据共享(尽量简单实现)。 首先应该明确 Java中没有全局变
- 区块链技术公司 看区块链数据如何实现安全共享
- Java中如何实现单个线程范围内的数据共享
- [一问一答][Android] 如何在两个Activity之间传递(共享)数据
- Android中如何使用HttpURLConnection实现GET POST JSON数据与下载图片
- 如何实现查询第n至m条数据?
- python网络数据采集-如何实现文件上传
- 如何实现一键构建大数据GIS基础环境