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

C++ ——const关键字

const关键字通常表示只读,不可修改,可以保证数据的安全性 

1、修饰局部变量

const修饰的局部变量,叫做常局部变量,表示该局部变量不可被修改,这种用法常用于引用参数

2、修饰成员变量

const修饰的成员变量,叫常成员变量,表示该成员变量的值无法被修改

特点:

        (1)该成员变量不可修改

        (2)两种初始化方式:直接初始化、构造初始化列表(不能通过构造函数),推荐使用构造初始化列表

#include <iostream>
using namespace std;
class Test{
private:
    int num1;  //普通成员变量
    const int num2;  //常成员变量
public:
    //构造初始化列表
    Test(int num1,int num2)
        :num1(num1),num2(num2){}
    void fun(){
        cout<<this->num2<<endl;
//        this->num2=90;  //报错,常成员变量不可修改
    }
};
int main(){
    Test t1(1,2);
    Test t2(5,6);
    t1.fun();
    t2.fun();
    return 0;
}

3、修饰成员函数

const修饰的成员函数,叫常成员函数

特点:

        (1)可以访问任何成员变量,但是不可以修改成员变量的值

        (2)只能调用常成员函数,不能调用非const修饰的成员函数

        (3)如果成员函数不需要修改成员变量的值,推荐使用const修饰,例如属性的读接口,体现的是安全性

#include <iostream>
using namespace std;
class Test{
private:
    int num1;  //普通成员变量
    const int num2;  //常成员变量
public:
    //构造初始化列表
    Test(int num1,int num2)
        :num1(num1),num2(num2){}
    //常成员函数
    void fn1()const{
        cout<<"普通成员变量:"<<this->num1<<endl;
        cout<<"常成员变量:"<<this->num2<<endl;
//        this->num1;  //报错,因为常成员函数不能修改任何变量的值
    }
};
int main(){
    Test t1(1,2);
    Test t2(5,6);
    t1.fn1();
    return 0;
}

4、修饰对象

const修饰的对象,叫做常对象

格式:const 类名 对象名  或者  类名 const 对象名

特点:常对象不能修改属性值,只能调用常成员函数

http://www.dtcms.com/a/24945.html

相关文章:

  • 探秘Transformer系列之(3)---数据处理
  • EasyRTC:智能硬件适配,实现多端音视频互动新突破
  • 生成艺术与审美图灵测试:当算法成为艺术创作者
  • resnet与yolo
  • Java进阶篇之Lambda表达式
  • 【项目】基于STM32F103C8T6的四足爬行机器人设计与实现(源码工程)
  • WPF 圆角按钮的实现
  • Elasticsearch AI Assistant 集成 DeepSeek,1分钟搭建智能运维助手
  • Python MoviePy 视频处理全攻略:从入门到实战案例
  • 详解 本机安装多个MySQL服务【为后续大数据量分库分表奠定基础,以mysql8.0为例,附有图文】
  • 从ARM官方获取自己想要的gcc交叉编译工具链接(Arm GNU Toolchain),并在Ubuntu系统中进行配置
  • java基础语知识(8)
  • 如何系统成为高级Qt工程师?
  • RadASM环境,win32汇编入门教程之六
  • HDFS应用-后端存储cephfs-java-API
  • qt实现文字跑马灯效果
  • Windows服务器搭建时间同步服务
  • QT QLineEdit 如何支持文件拖放
  • DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)
  • Unity Mirror 多房间匹配
  • DeepSeek AI 完全使用指南:从入门到精通
  • CSDN、markdown环境下如何插入各种图(流程图,时序图,甘特图)
  • 线性模型 - Logistic回归(参数学习具体示例)
  • PHP Web 开发基础
  • 什么是网络安全?网络安全防范技术包括哪些?
  • 【DeepSeek-R1】 API申请(腾讯云)
  • 2022年SCI1区TOP:K-means聚类算法KO,深度解析+性能实测
  • 蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)
  • 基于Odoo与IMAX-8工业物联技术的倍捻机智慧运维实施方案
  • Aseprite详细使用教程(9)——渐变工具