const成员函数

2023-05-16

const成员函数

const修饰的类成员函数称为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。
如下图所示:
在这里插入图片描述
左图的const实质上相当于修饰了成员函数内所隐含的this指针,在该成员函数内部的成员变量均不可做任何修改。(可读不可写)

const修饰类的对象和成员函数

请思考下面的几个问题:

const对象可以调用非const成员函数吗?

不可以,因为const修饰的对象为只读类型,若调用非const非成员函数,属于权限放大行为,只读权限变成既可以只读又可以可写。

非const对象可以调用const成员函数吗?

可以,因为非const对象权限拥有可读、可写权限,调用const成员函数属于权限缩小问题,权限变为只读。

const成员函数内可以调用其它的非const成员函数吗?

不可以,因为const修饰的成员函数为只读类型,若调用非const非成员函数,属于权限放大行为,只读权限变成既可以只读又可以可写。

非const成员函数内可以调用其它的const成员函数吗?

可以,因为非const成员函数权限拥有可读、可写权限,调用const成员函数属于权限缩小问题,权限变为只读。
还是那句话,权限只可以缩小,不能够放大。也就是我本身只能是可读的(const),不能传过去编程可读可写的了(非const)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

const成员函数 的相关文章

  • 安装spconv时遇到‘remove_const_t’ is not a member of ‘std’

    主要是由于cmake的版本太高或者太低 xff0c 导致编译错误 xff0c 将版本设置为3 14 4时 xff0c 再次编译没有再发生错误
  • const

    const是一个限定符 xff0c 被const限定的变量其值不会被改变 目录 1 修饰变量 2 修饰指针 3 修饰引用 4 修饰成员函数 5 宏定义 define 和 const 常量 1 修饰变量 指向的变量的值不可改变 xff0c 次
  • const成员函数

    const成员函数 const修饰的类成员函数称为const成员函数 xff0c const修饰类成员函数 xff0c 实际修饰该成员函数隐含的this指针 xff0c 表明在该成员函数中不能对类的任何成员进行修改 如下图所示 xff1a
  • arduino char*,const char*和string 三者转换

    使用String toInt 将字符串转为数字示例 String inString span class token operator 61 span span class token string 34 34 span span clas
  • warning:initialization discards ‘const’ qualifier from pointer target type 解决方法

    initialization discards const qualifier from pointer target type 意思是 xff0c 初始化时丢掉了 xff08 目标类型的 xff09 const 限定符 eg const
  • Visual Studio解决const char *与LPCWSTR 不兼容

    项目 gt 属性 gt 配置属性 gt 高级 xff0c 将字符集改为未设置
  • #define和const的区别

    这个区别用从几个角度来说 xff1a 角度1 xff1a 就定义常量说的话 xff1a const 定义的常数是变量 也带类型 xff0c define 定义的只是个常数 不带类型 角度2 xff1a 就起作用的阶段而言 xff1a def
  • void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别?

    const void fun 和void const fun 两个相同 如果采用 34 按址传递方式 34 的函数返回值加const 修饰 xff0c 那么函数返回值 xff08 即地址 xff09 的内容不能被修改 xff0c 该返回值只
  • var let const 详细区别

    用了ES6已经有一段事件了 xff0c 也看了很多文档 xff0c 以前觉得不用写一个文档总结 xff0c 但是经过一段时间的接触以后 xff0c 认为自己还是有必要去吧他们的区别详详细细的总结一下 块级作用域 白话一点就是在 中就是一个块
  • invalid conversion from ‘const char*’ to ‘char*’解决方法

    string类的c str函数返回的是const char类型 xff0c 如果将它用作实参传递给char的形参就会报这个错误解决方法 xff1a 在调用是加 char 转换一下 xff0c 比如 char cfgfile c str
  • 顶层const和底层const

    概念解释 表示声明常量的const都是顶层const 用于声明引用的const都是底层const 顶层const是 xff1a 指针本身是常量 底层const是 xff1a 指针所指的对象是常量 即是顶层const又是底层const xff
  • cv::imread(cv::String const&, int)’未定义的引用

    在 Makefile文件的195 行 LIBRARIES 43 61 opencv core opencv highgui opencv imgproc 后面添加 xff1a opencv imgcodecs opencv videoio修
  • [C/C++] const 详解(修饰变量、输入参数、返回值、成员函数)

    看到const关键字 xff0c 程序员首先想到的可能是const 常量 const 更大的魅力是它可以修饰函数的参数 返回值 xff0c 甚至函数的定义体 const 是constant 的缩写 xff0c 恒定不变 的意思 被const
  • C语言学习笔记->const和define区别

    1 define 是预编译指令 xff0c 而const 是普通变量的定义 define定义的宏是在预处理阶段展开的 xff0c 而const定义的只读变量在编译运行中使用 2 const定义的是变量 xff0c 而define定义的是常量
  • C++中#define和const的区别

    一 define是预处理指令 xff08 pre processor directive xff09 而const是关键字 define用于给一些值定义名称 字符串 xff0c 这样定义的字符串在C C 43 43 中称为宏定义 xff0c
  • const 与重载

    const到底是不是一个重载的参考对象 xff0c 请看下面的例子 class A public void f int i std cout lt lt 34 1 34 函数1 void f int i const std cout lt
  • ubuntu(15):对‘casadi::MX::MX(casadi::MX const&)’未定义的引用

    catkin build 编译报错 xff0c 找不到CASADI的头文件目录CASADI INCLUDE DIRS或者库文件也达不到CASADI LIBRARIES xff1b 对 casadi MX horzsplit casadi M
  • c++之const指针

    我们知道 const可以修饰一般的变量 这样的变量我们称之为常变量 常变量的值是不能修改的 const也可以修饰指针变量 可以指定指针变量是一个常量 或者指定指针变量指向的对象是一个常量 有以下几种情况 一 指向常量的指针变量 const
  • C-const与指针

    const int p 不可以对 p 再次进行赋值 但可以对p进行再次赋值 p 6 p int const p 不可以对p再次进行操作 但可以对 p 再次进行操作 p 6 p const int const p 既不可以对p再次进行操作 也
  • const关键字与指针

    const关键字与指针 1 指针包含的地址是常量 不能被修改 但可以修改指针指向的数据 int x 10 int const p x p 34 指向的数据可以修改 int y 32 p y 不能修改P指向的地址 2 指针指向的数据是常量 不

随机推荐

  • 两台MAC时间机器的备份和系统恢复

    背景 xff1a 一台mbp16寸 xff08 2019 xff09 xff0c 系统为最新的12 2 1 xff0c 本文命名为A 一台mba13寸 xff08 2020 xff09 xff0c 系统为10 15 7 xff0c 本文命名
  • 个人深度学习工作站配置ssh&xrdp&vnc远程连接

    最近实验室买了台服务器主要用于跑深度学习 xff0c 买过来只有一台主机 xff0c 所有的东西都需要自己配置 xff0c 经过半个月了踩坑 xff0c 将自己配置成功的案例写下来 xff0c 有相关需求的小伙伴可以参考一下 xff1a 主
  • 程序员必须掌握的核心算法

    程序员必须掌握的核心算法 一 算法最最基础 1 时间复杂度 2 空间复杂度 一般最先接触的就是时间复杂度和空间复杂度的学习了 xff0c 这两个概念以及如何计算 xff0c 是必须学的 xff0c 也是必须最先学的 xff0c 主要有最大复
  • MFC实现计算器

    MFC实现计算器 简易计算器实现加减乘除等功能 xff0c 可以使用小数点 1 首先添加计算器按钮界面 2 设置好各个变量 xff0c 注意添加变量时要选择value 3 双击各个button按键依次添加功能 话不多说直接上代码 Mcoun
  • 关于图算法的整理DFS,BFS,Dijkstra,Prim代码

    图 邻接矩阵与邻接表 xff08 两者皆可用来表示有向图和无向图 xff09 创建一个基类graph pragma once include lt iostream gt include lt vector gt include lt ma
  • 哈夫曼树基本原理

    首先我们看看基本定义 哈夫曼树的学术定义为 xff0c 带权路径长度最短的二叉树 xff0c 即节点具有两个属性 xff1a 1 权值 xff0c 可以看作节点表达出的数值大小 xff0c 或者变换的表示为概率大小 2 路径 xff0c 可
  • Abaqus应力张量方向输出

    Abaqus应力张量方向输出 从abaqus中能够查看应力张量方向 xff0c 但是无法实现方向场的输出 xff0c 由于实际工程需要考虑应力方向 xff0c 必须将应力张量的方向考虑进去 具体实现 xff0c 不会可以私聊我
  • POV-Ray简单案例

    POV Ray xff0c 全名是Persistence of Vision Raytracer xff0c 是一个使用光线跟踪绘制三维图像的开放源代码免费软件 按照3 7版本给的参考 xff0c 写的代码 xff0c 以下为部分源码 ve
  • MFC图片保存

    MFC保存图片 添加事件处理程序于view类中 代码如下 xff1a void CVoronoi2View OnFileSaveAs CClientDC dc this CRect rect GetClientRect amp rect 获
  • c++代码运行时间测试

    测试代码运行时间 xff08 以秒 为单位 xff09 使用高精度时控函数QueryPerformanceFrequency xff08 xff09 和 QueryPerformanceCounter xff08 xff09 具体实现如下
  • 内存四区的深入学习

    内存四区 1 代码区 写的代码 xff0c 包括各种函数 由OS管理 xff0c 程序结束时 才释放 2 全局区 主要的数据有 xff1a 全局变量 静态变量 常量 xff08 字符串常量 xff09 在函数返回类型前加static xff
  • 三维空间点到线段的距离

    点到线段的最短距离 与点到直线的最短距离 存在区别 xff0c 求点到线段的最短距离 时要考虑参考点P沿线段方向的投影点Q是否在线段 上如图所示 xff1a 点到线段的最短距离如下图所示 xff1a 解决点到线段的距离可以用面积法等 xff
  • Apple Developer会员注册以及续订“支付授权失败...”问题

    2020 08 20更新 xff1a 从去年年底开始 xff0c 苹果开发者账号的注册方式已经修改为通过iOS设备上的Apple Developer App进行注册 xff0c 账号的年费支付方式也被调整为与一般的App一样 xff0c 以
  • 十大经典排序算法

    十大经典排序算法 目录 十大经典排序算法 1 时间复杂度为O n2 1 1 冒泡排序 xff08 Bubble Sort xff09 1 2 选择排序 xff08 Selectin Sort xff09 1 3 插入排序 xff08 Ins
  • 指针传参的深入思考

    对指针传参的深入思考 xff0c 很重要的一点还是需要看指针是否指向新的地址 1 如果指向新的空间 xff0c 那么对形参处理后不会影响实参 xff0c 即参数没有传回 xff0c 因为实参的指针地址和形参指针的地址不同 xff0c 对不同
  • 建立二叉树

    一颗二叉树 创建结点 typedef struct node int data node lchild node rchild node lchild NULL rchild NULL Tree tree 建树 tree bulid tre
  • 学习STL的历程——关联容器

    STL模板库包括了容器 算法 迭代器 仿函数 适配器 分配器 主要谈谈容器 STL中的容器有序列容器和关联容器 xff0c 容器适配器等 1 xff09 序列容器 xff08 以线性序列的方式存储元素 xff0c 没对元素进行排序 xff0
  • STL三角网格模型体积计算

    float STLVolume float vols 61 0 for int i 61 0 i lt Tmesh gt faces size i 43 43 vec p1 61 Tmesh gt vertices Tmesh gt fac
  • Abaqus齿轮有限元分析

    齿轮啮合模拟 整理好的文件放在资源里了 xff0c 直接解压即可齿轮有限元分析 保姆级步骤如下 xff08 废话少说直接看图片设置 xff09 xff1a 首先先对齿轮模型划分网格 xff0c 该分析所用的前处理软件为Hypermesh x
  • const成员函数

    const成员函数 const修饰的类成员函数称为const成员函数 xff0c const修饰类成员函数 xff0c 实际修饰该成员函数隐含的this指针 xff0c 表明在该成员函数中不能对类的任何成员进行修改 如下图所示 xff1a