1.2 const关键字

1、常量 指针常量

定义常量:const 类型 =值

定义指针常量:const *类型=值

  • 常量指针不可通过常量指针修改其指向的内容
  • 可直接修改其指向的内容
  • 常量指针的指向可以变化
  • 不可以把常量指针赋值给非常量指针(语法规定:const指针指向的地方p1倾向于该处尽量不要修改,若赋值给非常量p2,则以后可以通过修改p2指向内容修改p1,产生不安全因素)
  • 可以把非常量指针赋值给常量指针
  • 可以用强制类型转化 把常量指针赋值给非常量指针

    e.g.
int n,m;
const *p=&n;
*p=5//illegal 常量指针不可通过常量指针修改其指向的内容
n=4//OK 可直接修改其指向的内容
p=&m;//OK 常量指针的指向可以变化
const int *p1;int *p2;
p1=p2;//OK 可以把非常量指针赋值给常量指针
p2=p1;//illegal 不可以把常量指针赋值给非常量指针
p2=(int *)p1;//OK 强制类型转换 合法

2、实例:函数参数作为常量指针

  • 可避免函数内部不小心改变参数指针所指向的内容

    e.g.
void f(const char *p)
{
strcpy(p,"this");//illegal strspy传入的第一个参数为char* 型,用const char给其赋值为非法,编译器报错
printf("%s",p);//OK
}

3、常引用

  • 不能通过常引用修改其引用的变量

    e.g.
int n;
const int &r=n;
r=5;//illegal 不能通过常引用修改其引用的变量
n=4;//OK

OOP 1.2 const关键字的更多相关文章

  1. PHP面向对象(OOP):.static和const关键字的使用(self::)

    static关键字是在类中描述成员属性和成员方法是静态的:静态的成员好 处在哪里呢?前面我们声明了“Person”的人类,在“Person”这个类里如果我们加上一个“人所属国家”的属性,这样用“Per ...

  2. PHP的final关键字、static关键字、const关键字

    在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...

  3. C++中const关键字的使用总结

    C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中 ...

  4. final关键字+const关键字

    final关键字 1.如果我们希望某个类不被其它的类来继承(可能因为安全考虑),可以使用final. 例题 <? final class A{} class B extends A{};//会报 ...

  5. C++学习11 类和new、delete操作符 类与const关键字

    如果你是Java.C#.PHP程序员,那么会对 new 非常熟悉,在这些编程语言中,只能通过 new 来创建对象. 在C++中,你可以像定义变量一样来创建对象,如: Student stu; //对象 ...

  6. C++中的const关键字

    http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...

  7. 陈正冲老师讲c语言之const关键字

    1.const 关键字也许该被替换为 readolny const是constant的缩写,是恒定不变的意思,也翻译为常量.常数等.很不幸,正是因为这一点,很多人都认为被const修饰的值是常量.这是 ...

  8. C语言之头文件,static与const关键字

    [前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔 ...

  9. static和const关键字的作用

    static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...

随机推荐

  1. 【DB2数据库在windows平台上的安装】

  2. Rabbitmq(三)

    1.在服务器安装好rabbitmq后,自己配置自己用的vhost,exchange和queue的绑定 2.项目添加RabbitMqClient.dll(nuget获取)引用 3.添加helper就可以 ...

  3. Asp.Ner Core定时任务

    AspNet Core定时任务 纪念人类首张黑洞照片发布 第一种方式BackgroundService 基于后台服务类BackgroundService实现,类所在命名空间Microsoft.Exte ...

  4. 浅谈style.height、clientHeight、offsetHeight、scrollHeight

    先分别介绍以下,以下资料来自MDN HTMLElement.offsetHeight 是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数. Element.clie ...

  5. 20155209实验一《Java开发环境的熟悉》实验报告

    20155209实验一<Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验步骤一 ...

  6. 20155216 实验二 Java面向对象程序设计

    实验二:Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD. 2.理解并掌握面向对象的三要素:封装.继承.多态. 3.初步掌握UML建模. 4.熟悉S.O.L.I.D原则. 5.了解设计 ...

  7. 20155235 2017-2018-1 《Java程序设计》第2周学习总结

    20155235 2017-2018-1 <Java程序设计>第2周学习总结 教材学习内容总结 3.1类型.变量与运算符 类型 基本类型 类类型 变量 基本规则 不可以用数字作为开头,不可 ...

  8. [BZOJ4011][HNOI2015]落忆枫音-[dp乱搞+拓扑排序]

    Description 传送门 Solution 假如我们的图为DAG图,总方案数ans为每个点的入度In相乘(不算1号点).(等同于在每个点的入边选一条边,最后一定构成一棵树). 然而如果加了边x- ...

  9. day1 Ubuntu 使用

    ctrl + shift + +   放大终端 ctrl + -   缩小终端 软连接,硬链接   ln python@ubuntu:~/Desktop$ vim .txt python@ubuntu ...

  10. 【LG3703】[SDOI2017]树点涂色

    [LG3703][SDOI2017]树点涂色 题面 洛谷 题解 更博辣,更博辣!!! 猪年的第一篇博客 一次只能染根到\(x\),且染的颜色未出现过 这句话是我们解题的关键. 设\(x\)到根的颜色数 ...