首页 > 其他分享 >const关键字详解

const关键字详解

时间:2023-05-19 22:03:20浏览次数:31  
标签:const 变量 修改 int 关键字 详解 修饰 指针

1、const修饰普通变量

变量变为常变量,具有常数性质的变量。不可以修改(只读)。

2、const修饰指针

int a=10;
const int* p1=&a;
int const *p2=&a;
int* const p3=&a;

第一个const修饰的是*p1,也就是不可以通过指针引用去修改指针所指向变量的值。

第二个与第一个效果相同,写法不一样而已。

第三个const修饰的是指针本身p3,表示指针不可修改。

3、const修饰函数形参

const修饰引用形参

void func(const int& val)

表示无法通过引用修改实参,这里的引用实际是实参的一个别名,没有进行拷贝,保证了外部数据的安全性。

注意:如果函数的参数是非const的引用,则他就不能接受const实参变量,这样会造成权限的放大,如果函数的参数是const指针或引用,则它既可以接受 const的实参变量,也可以接受非const实参变量,权限只能缩小不能放大。

4、const修饰成员变量

表示为成员常量,不能修改,同时他只能在初始化列表中赋值。

5、const修饰成员函数

const成员函数表示不能修改this指针,所指向对象的成员变量也不可以修改,const修饰类成员函数实际上是:const 类类型 *const this,

class data
{
  public:
			void display()const
      {
        ...;
      }
  		//实际写法
  		void display(const data *const this)
      {
        ...;
      }
          




标签:const,变量,修改,int,关键字,详解,修饰,指针
From: https://blog.51cto.com/u_16003640/6315238

相关文章

  • 详解c++STL—容器set/multiset
    1、set基本概念1.1、功能所有元素都会在插入时自动被排序1.2、本质:set/multiset属于关联式容器,底层结构是用二叉树实现。1.3、set和multiset区别set不允许容器中有重复的元素multiset允许容器中有重复的元素2、set构造和赋值2.1、功能描述创建set容器以及赋值2.1、构造set<T>st;/......
  • 多图详解:不停机分库分表五个步骤
    1理论知识1.1分库分表是否必要分库分表确实可以解决单表数据量大这个问题,但是并非首选。因为分库分表至少引入了三个必须解决的突出问题。第一是分库分表方案本身具有的复杂性。第二是本地事务失效问题,原本在同一个数据库中可以保证强一致性业务逻辑,分库之后事务失效。第三是......
  • Java开发 Shiro框架详解(轻松入门)
    ShiroShiro简介什么是Shiro?ApacheShiro是一个Java的安全(权限)框架。Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以完成,认证,授权,加密,会话管理,Web集成,缓存等.官网:shiro.apache.org/官方文档十分钟快速入门:shiro.a......
  • NumPy_数据处理详解—矩阵运算
    示例根据出版的图书进行代码桥写代码示例#!/usr/bin/python3#-*-coding:utf-8-*-importpandasaspdimportnumpyasnpimportopen3daso3ddefget_from_eye(rotation,trans):##单位矩阵-对角线元素为1,非对角线元素全为0的矩的正方矩阵np.identity......
  • 【Linux】详解六种配置Linux环境变量的方法(以centos为例)
    本文时间2023-05-19作者:sugerqube漆瓷本文重理解,!!忽略环境变量加载原理!!本文目标:理解六大环境变量配置,选择合适的配置文件进行配置配置环境的理由以shell编程为例现在我们想要运行名为"sugerqube.sh"的脚本需要运行的命令是./sugerqube.sh即在命令行输入脚本的地址注:.......
  • Media Queries详解
     MediaQueries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码: <linkhref="css/reset.css"rel="stylesheet"type="text/css"media="screen"/> <linkhref="css/style.css"rel="stylesheet"typ......
  • Java Semaphore 信号量详解
    Semaphore基本使用场景Semaphore的基本使用场景是限制一定数量的线程能够去执行.举个简单的例子:一个单向隧道能同时容纳10个小汽车或5个卡车通过(1个卡车等效与2个小汽车),而隧道入口记录着当前已经在隧道内的汽车等效比重.比如1个小汽车和1个卡车,则隧道入口显示3.若隧道......
  • JSON.parse和JSON.stringify方法详解
    1.JSON.parse()用于从一个字符串中解析出json对象<!--作者:zhangfan页面名称:JSON.parse()、JSON.stringify()使用方法--><template><divid="product-list-one"><button@click="jsonParse()">执行jsonParse</button></div><......
  • JVM堆详解
     1、在JVM堆空间可以分为三个大区:新生代、老年代、永久代。2、新生代可以划分为三个区,Eden区,两个幸存区。 在JVM运行时,可以通过配置一下参数改变整改JVM堆的配置1.JVM运行时堆的大小-Xms堆的最小值-Xmx堆空间的最大值2.新生代堆空间大小调整-XX:NewSize新生......
  • 关于Apple设备私有的apple-touch-icon属性详解
    以前我们用过favicon在浏览器给网站进行身份标识,用法如下:1.<linkhref="http://image.feeliu.com/web/favicon.ico"rel="shortcuticon"/>2.<linkhref="http://image.feeliu.com/web/favicon.ico"rel="Bookmark"/> 现今移动设备越来越多,苹......