当前位置: 首页 > news >正文

C++ :const修饰成员函数

常函数: 

常函数:
   成员函数后加const后我们称为这个函数为常函数
   常函数内不可以修改成员属性
   成员属性声明时加关键字mutable后,在常函数中依然可以修改

属性可修改:

class Person
{
public:
    void showPerson()
    {
        m_A = 100;
    }
    int m_A;

};

加上 const 属性不可修改:

class Person
{
public:
    void showPerson() const
    {
        m_A = 100;
    }
    int m_A;

};

具体示例如下:


#include <iostream>
using namespace std;class Person
{
public://隐含在每一个成员函数内部都有一个this指针//this指针的本质是: 一个指针常量, 指针的指向不可修改,值可以修改//如果想让指针指向的值也不可以修改,需要声明常函数//const Person* const this;//在成员函数 后面加const,修饰的是this指向,让指针指向的值也不可以修改void showPerson() const   //常函数 (常函数中不允许修改指针指向的值){  this->m_B = 100;    //修改加关键字mutable//this->m_A = 100;//this = NULL; //不能修改指针的指向 Person* const this;}int m_A;mutable int m_B;   //特殊变量,即使在常函数中,也可以修改这个值,加关键字mutable
};void test01()
{Person p;p.showPerson();}
int main()
{test01();system("pause");return 0;
}

 常对象:

常对象:
   声明对象前加const称该对象为常对象
   常对象只能调用常函数

class Person
{
public://隐含在每一个成员函数内部都有一个this指针//this指针的本质是: 一个指针常量, 指针的指向不可修改,值可以修改//如果想让指针指向的值也不可以修改,需要声明常函数//const Person* const this;//在成员函数 后面加const,修饰的是this指向,让指针指向的值也不可以修改void showPerson() const   //常函数 (常函数中不允许修改指针指向的值){  this->m_B = 100;    //修改加关键字mutable//this->m_A = 100;//this = NULL; //不能修改指针的指向 Person* const this;}void func(){m_A = 10000;}int m_A;mutable int m_B;   //特殊变量,即使在常函数中,也可以修改这个值,加关键字mutable
};void test01()
{Person p;p.showPerson();}void test01()
{const Person p; //常量对象   在对象前面加上const,变为常对象//p.mA = 100; //常对象不能修改成员变量的值,但是可以访问p.m_B = 100;  //m_B是特殊的值 但是常对象可以修改mutable修饰成员变量//常对象只能调用常函数p.showPerson();//p.func();    常对象不可以调用普通成员函数,因为普通成员函数可以修改属性
}int main()
{test01();system("pause");return 0;
}

 

http://www.lryc.cn/news/245721.html

相关文章:

  • 论文阅读:“Model-based teeth reconstruction”
  • Web 安全之证书透明(Certificate Transparency)详解
  • 智能优化算法应用:基于蜻蜓算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 【古诗生成AI实战】之二——项目架构设计
  • 动态网页从数据库取信息,然后展示。
  • 单片机学习3——数码管
  • 数据库表结构导出成Excel或Word格式
  • School training competition ( Second )
  • 深度解析 Docker Registry:构建安全高效的私有镜像仓库
  • leetcode 不同的二叉搜索树
  • 通俗易懂的spring Cloud;业务场景介绍 二、Spring Cloud核心组件:Eureka 、Feign、Ribbon、Hystrix、zuul
  • 大数据预处理技术
  • 跳表的学习记录
  • 电子学会C/C++编程等级考试2022年09月(二级)真题解析
  • 如何使用nginx部署静态资源
  • lua的gc原理
  • redis作为缓存详解
  • 231127 刷题日报
  • 【Linux】vim-多模式的文本编辑器
  • Ubuntu 启用 root 用户
  • 手摸手Element-ui路由VueRoute
  • 探究Kafka原理-5.Kafka设计原理和生产者原理解析
  • 浅谈C#在unity应用中的工厂模式
  • 卷积神经网络(Inception-ResNet-v2)交通标志识别
  • 网易云音频数据如何爬取?
  • 97、Text2NeRF: Text-Driven 3D Scene Generation with Neural Radiance Fields
  • 【C++】多态(上) 多态 | 虚函数 | 重写 | final、override | 接口继承与实现继承 | 抽象类
  • 国内怎么投资黄金,炒黄金有哪些好方法?
  • springboot实现数据脱敏
  • uniapp实现多时间段设置