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. ccf练习---节日

    问题描述 有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日. 现在,给你a,b,c和y1, y2(1850 ≤ y1, y2 ≤ 2 ...

  2. IClone地形编辑器结合T4M插件在Unity3D使用

    通过IClone编辑器打造的地形,经过T4M插件的转化后,资源占用极少,比在Unity中自己刷出来的地形再通过T4M转化的要小的的多多了,非常适合用在手机上. IClone地形编辑器下载地址: 如果对 ...

  3. Linux实现SSH无密码登录(对目录权限的设置非常详细,可以参考一下)

    假设服务器IP地址为192.168.1.1,机器名:cluster.hpc.org 客户端IP地址为172.16.16.1,机器名:p470-2.wangrx.sioc.ac.cn 客户端用户yzha ...

  4. 虚拟机比较(wiki)

    https://zh.wikipedia.org/wiki/%E8%99%9B%E6%93%AC%E6%A9%9F%E5%99%A8#.E8.99.9B.E6.93.AC.E6.A9.9F.E5.99 ...

  5. 关于oracle动态视图v$datafile和v$datafile_header(转)

    v$datafile是从oracle的控制文件中获得的数据文件的信息v$datafile_header是从数据文件的头部在正常运行下,两者的检查点SCN值是一致的,但当datafile出现损坏时可以用 ...

  6. 二分图带权最大独立集 网络流解决 hdu 1569

    方格取数(2) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  7. poj 3311 Hie with the Pie(状态压缩dp)

    Description The Pizazz Pizzeria prides itself or more (up to ) orders to be processed before he star ...

  8. Unity 两张背景的切换平移

    两张背景图片向左移动,当屏幕看见的时候. 使用的是Unity自带的Sprite,当然也可以使用NGUI Sprite using UnityEngine; using System.Collectio ...

  9. linux网络编程--跳水send和recv

    要了解一个概念:所有的TCP socket在内核具有发送缓冲器和接收缓冲器.TCP除了全双工操作模式TCP滑模取决于这两个单独buffer和这个buffer填充状态. 接收缓冲器数据缓存入内核.应用进 ...

  10. iOS开发-21UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解

    (1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...