c++共用数据的保护

既要使数据能在一定范围内共享,又要保证他不被任意修改,这时可以把有关的数据定义为常量。

常对象

1.定义常对象的形式

类名 const 对象名(实参表)
const 类名 对象名(实参表)

2.常对象只能调用它的常成员函数,这是为了防止调用普通函数时修改常对象中数据成员的值

const Time t1(10,15,36)
t1.get_time;//非法

补充:

如果get_time普通成员函数并未修改常对象的值为什么也不允许呢?

1.因为编译系统会充分考虑可能出现的情况,对不安全因素进行拦截

为什么编译系统不专门检查一下函数的代码,查看是否修改了常对象的值呢?

1.因为实际上函数的定义与声明可能不在同一个源程序文件中,而编译则是以一个源程序文件为单位的,无法检测出两个源程序文件之间是否存在矛盾,如果有错,只有在连接或者运行阶段才会报错

3.在实际需求中有时也会修改常对象的数据成员,即在声明数据成员是在前面加上mutable

常数据成员

只有通过构造函数的参数初始化列表对常数据成员进行初始化,任何其他函数都不能对常数据成员赋值

常成员函数:

如果将成员函数声明为常成员函数,则只能引用本类中的数据成员,而不能修改它们,例如只能用于输出数据

void get_time()const;

类型名 函数名(参数表)const

const是函数类型的一部分(在声明和定义时都应有const关键字,在调用时不必有const)

 1.常对象不能调用普通通成员函数

2.常成员函数不能调用另一个非const成员函数

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

将指针变量声明为const型,即使其指向位置不变

形式:类名*const 指针变量名

Time t1;

Time* const ptr1=t1;

注意:指向对象的指针不可改变,指向对象的值可以改变

const指针可以指向:1.常变量2.一般变量变量

const指针在指向一般变量期间,变量具有常变量的特性而不是就是常变量

指向对象的指针在形式上有区分:

Time*const p;//指向对象的常指针变量

const Time*p;//常对象的指针变量

规则:

当希望调用函数时对象的值不被修改,就应该把形参定义为为指向常对象的指针变量,同时用对象的地址作实参(对象可以是const或者不是)

对象的常引用:

引用:一个变量的别名,实际上就是引用一个指针变量来存放该变量的地址

总结:在c++面向对象程序设计中,经常用到常指针和常引用,这样既能保证数据安全,在调用函数时又不必建立实参的拷贝

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
谭浩强教授,我国著名计算机教育专家。1934年生。1958年清华大学毕业。学生时代曾担任清华大学学生会主席、北京市人民代表。他是我国计算机普及和高校计算机基础教育开拓者之一,现任全国高等院校计算机基础教育研究会会长、教育部全国计算机应用技术证书考试委员会主任委员。 谭浩强教授创造了3个世界纪录:(1)20年来他(及和他人合作)共编著出版了130本计算机著作,此外主编了250多本计算机书籍,是出版科技著作数量最多的人。(2)他编著和主编的书发行量超过4500万册,是读者最多的科技作家。我国平均每30人、知识分子每1.5人就拥有1本谭浩强教授编著的书。(3)他和别人合作编著的《BASIC语言》发行了1200万册,创科技书籍发行量的世界纪录。此外,他编著的《C程序设计》发行了600万册。他曾在中央电视台主讲了BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,Visual Basic七种计算机语言,观众超过300万人。 在我国学习计算机的人中很少有不知道谭浩强教授的。他善于用容易理解的方法和语言说明复杂的概念。许多人认为他开创了计算机书籍贴近大众的新风,为我国的计算机普及事业做出了重要的贡献。 谭浩强教授曾获全国高校教学成果国家级奖、国家科技进步奖,以及北京市政府授予的“有突出贡献专家”称号。《计算机世界》报组织的“世纪评选”把他评为我国“20世纪最有影响的IT人物”10个人之一(排在第2位)。他的功绩是把千百万群众带入计算机的大门。 1 C语言概述 1.1 C语言的发展过程 1.2 当代最优秀的程序设计语言 1.3 C语言版本 1.4 C语言的特点 1.5 面向对象的程序设计语言 1.6 C和C++ 1.7 简单的C程序介绍 1.8 输入和输出函数 1.9 C源程序的结构特点 1.10 书写程序时应遵循的规则 1.11 C语言的字符集 1.12 C语言词汇 1.13 Turbo C 2.0 集成开发环境的使用 1.13.1 Turbo C 2.0 简介和启动 1.13.2 Turbo C 2.0 集成开发环境 1.13.3 File菜单 1.13.4 Edit 菜单 1.13.5 Run 菜单 1.13.6 Compile 菜单 11.13.7 Project 菜单 1.13.8 Options菜单 1.13.9 Debug 菜单 1.13.10 Break/watch 菜单 1.13.11 Turbo C 2.0 的配置文件 2 程序的灵魂—算法 2.1 算法的概念 21 2.2 简单算法举例 21 2.3 算法的特性 24 2.4 怎样表示一个算法 24 2.4.1 用自然语言表示算法 24 2.4.2 用流程图表示算法 24 2.4.3 三种基本结构和改进的流程图 28 2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 2.5 结构化程序设计方法 31 3 数据类型、运算符与表达式 3.1 C语言的数据类型 32 3.2 常量与量 33 23.2.1 常量和符号常量 33 3.2.2 量 33 3.3 整型数据 34 3.3.1 整型常量的表示方法 34 3.3.2 整型量 35 3.4 实型数据 37 3.4.1 实型常量的表示方法 37 3.4.2 实型量 38 3.4.3 实型常数的类型 39 3.5 字符型数据 39 3.5.1 字符常量 39 3.5.2 转义字符 39 3.5.3 字符量 40 3.5.4 字符数据在内存中的存储形式及使用方法 41 3.5.5 字符串常量 41 3.5.6 符号常量 42 3.6 量赋初值 42 3.7 各类数值型数据之间的混合运算 43 3.8 算术运算符和算术表达式 44 3.8.1 C运算符简介 44 3.8.2 算术运算符和算术表达式 45 3.9 赋值运算符和赋值表达式 47 33.10 逗号运算符和逗号表达式 48 3.11 小结 49 3.11.1 C的数据类型 49 3.11.2 基本类型的分类及特点 49 3.11.3 常量后缀 49 3.11.4 常量类型 49 3.11.5 数据类型转换 49 3.11.6 运算符优先级和结合性 50 表达式 50 4 最简单的 C程序设计—顺序程序设计 4.1 C语句概述 51 4.2 赋值语句 53 4.3 数据输入输出的概念及在 C 语言中的实现 54 4.4 字符数据的输入输出 54 4.4.1 putchar 函数(字符输出函数) 54 4.4.2 getchar函数(键盘输入函数) 55 4.5 格式输入与输出 55 4.5.1 printf 函数(格式输出函数) 56 4.5.2 scanf函数(格式输入函数)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值