1.对于普通的const与基本类型组合,都是表示的是这是一个常量,

  const int a;

  int const a;

表示的意思是一样的,a是一个常量,不可改变

2.对于const与指针组合在一起,可以将const理解为内容,*理解为指针,誰在前面谁不能改变,誰在前面先读谁

  const int *a;  等价于int const *a;    const在前面所以内容不可以改变,但是指针指向可以改变。也就是常量指针

如:int const *a=b;    这样就不能再出现*a=x等其他值了,因为内容不可变,但是可以通过a=&x;这样来进行改变指针的指向

    int *const a;  表示的是指针指向不可改变,但是指针所存放的内容可以改变,也即是指针常量

 如:int *const a=b; 这样再出现 a=&x,这样重定义指针指向的语句就不合法,只能通过*a=x这样来进行内容的改变。

const int &ri=i;定义的是引用是另一变量的别名,它本身就是一个常量,也就是说不能再让一个引用成为另一个变量的别名。 我们不能通过ri去改变它所代表的内存区域

3.const修饰函数传入参数

将函数传参数修饰为const,以指明使用这种参数仅仅是为了效率的原因,而不是想让调用函数能够修改对象的值,同理,将指针声明成const,函数将不修改由这个参数所指向的对象。 如:void Fun(const int *a);  void Fun(const int &a)

4.修饰函数返回值

可以阻止用户修改返回值,返回值当然也要相应的赋给常量或者常指针。

例如:有时候需要返回的是指针或者引用,我们可以通过指针修改所指的对象,但是有时候不希望改变这个内容,这个时候就需要返回一个常量。

5.const修饰成员函数(c++特性)

const对象只能访问const成员函数,而非const对象可以访问任意成员函数,包括const成员函数

const对象的成员是不能被修改的,而通过指针维护的对象确实是可以修改的

const成员函数不可以修改对象的数据,不管对象是否具有const性质。编译时以是否修改成员函数为依据进行检查。

解释:

const成员函数:函数名称后面加上const。

当一个类中存在同名,同参的常量和非常量成员函数时,调用的时候,常量对象调用常量成员函数,非常量对象调用非常量成员函数。

比较常见的const与指针的组合情况的更多相关文章

  1. c,const和指针组合的几种意义

    const和指针的组合: 注释部分表示非法. ; ; p=&a; //*p = 1 ; ; pp= &a; //*pp = 1; ; //pv=&a; *pv = ; ; // ...

  2. c++中的const与指针

    const修饰符 使用const修饰变量时,该变量的值不可修改,因此需要初始化. 例如 const int s = 0: 此时s为值不可变的变量. 那么基于此,当const修饰指针时的情况有三种: ( ...

  3. C++中的const和指针组合

    在C++里,const修饰指针有以下三种情况 (1)指针常量:即指向常量的指针 const  int *p或者int const *p const在*前,,可以这样理解它的功能,因为const在*前, ...

  4. C语言--const修饰指针解析

          这种例子在我们平时编程时可能会很少用,但是在面试时被问的可能性就很大了. 用const修饰指针,常见的情况可以分为四种: 1.const int *p; // p 可变,p 指向的对象不可 ...

  5. 结合示例说明C++中const和指针结合时怎么理解

    在之前随笔<C++中const使用要点(一)>中简单叙述了const int*.int* const和const int* const的区别,记住三句话就能在实际运用时用对,但是看书时发现 ...

  6. 【原创】浅谈指针(五)const和指针

    前言 过了几个月再次更新.最近时间也不多了,快要期中考试了,暂且先少写一点吧. 本文仅在博客园发布,如在其他平台发现均为盗取,请自觉支持正版. 练习题 我们先来看几道题目.如果这几道题都不会的话,就先 ...

  7. 面试集锦-常量,const, const 对指针的影响

    在C语言中不可改变的数据(量)就是常量    在C语言中有三种常量        字面量(直接量),就是直接写出来的,从写法上就可以看出值与类型等,例如:19,123.456等        名字常量 ...

  8. C语言 const与指针

    //const与指针 #include<stdio.h> #include<stdlib.h> void main(){ ; ; const int *p; p = & ...

  9. 弄清const与指针、引用之间的关系

    const和 define在常量定义上的差别 在C++中,我们可以使用const 或者 宏define来定义常量.但是C++鼓励使用const定义常量,而不是宏define.原因有很多. 1.defi ...

随机推荐

  1. Win7/Win8 系统下安装Oracle 10g 提示“程序异常终止,发生未知错误”的解决方法

    我的Oracle 10g版本是10.2.0.1.0,(10.1同理)选择高级安装,提示“程序异常终止,发生未知错误”. 1.修改Oracle 10G\database\stage\prereq\db\ ...

  2. wordpress教程之文章页single.php获取当前文章所属分类

    之所以要发这篇文章,是因为这个方法适用于: WP默认文章分类 手动添加的自定文章分类 插件(custom post type ui)添加的自定义文章分类(含taxonomy) 方法目的:在文章模板中, ...

  3. BZOJ NOI十连测 第二测 T2

    思路:20%可以搜索.. #include<algorithm> #include<cstdio> #include<cmath> #include<cstr ...

  4. USB封包格式

    1.起始(SOP)封包 根集线器会在每1 ms时,送出SOF封包.这介于2个SOF封包之间的时间,即称为帧(frame).SOF封包虽是属于令牌封包的一种,但却具有独自的PID形态名称SOF.通常目标 ...

  5. C# 获取当前应用程序的绝对路径支持asp.net

      Asp.net在类库中获取某文件的绝对路径.这个问题在初学的时候就经常碰到过,经常是查了忘,忘了查.浪费了大量的今天专门写个文章,以后到这里查.有时间顺便记得研究下这个东西. 在主程序目录就不说了 ...

  6. Wpf中MediaElement循环播放

    原文:Wpf中MediaElement循环播放 前一段时间做了一个项目,里面牵涉到媒体文件的循环播放问题,在网上看了好多例子,都是在xaml中添加为MediaElement添加一个TimeLine,不 ...

  7. 【Mysql 调用存储过程,输出参数的坑】

    玛德,数据行都返回过来了,就是没有输出参数!!! 扒官方设计文档:这么一段 雷死人了!!! When a stored procedure is called using MySqlCommand.E ...

  8. UESTC_冰雪奇缘 CDOJ 843

    艾莎女王又开始用冰雪魔法盖宫殿了. 她决定先造一堵墙,于是释放魔法让形为直角梯形的冰砖从天而降,定入冻土之中. 现在你将回答女王的询问:某段冻土上冰砖的面积. 注:多块冰砖之间会互相重叠,重叠部分要多 ...

  9. 【常用小命令】解决windows下有些文件文件名识别不了导致删除不了的问题

    在百度上找的解决方案哈,只为自己存档一份. 因为发现现在从csdn上下载的文件都是“.pdf_”格式,下载2个文件,将一个文件格式改成 “.pdf”,另一个文件就扔回不了回收站了, 所以没有办法就找各 ...

  10. UILabel + 导入字体

    UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, 300, 100)]; 1.设置文字颜色 label.textC ...