c++ const关键字

文章目录

概述

聊起const,要先从几个方面聊起。作为一个关键字,主要用来修饰变量或者函数,然后呢还有模板,lamda表达式。接下来从修饰变量和函数的方面来说。

变量

1、定义常量

声明一个常量值,在初始化后不能被修改。

cpp 复制代码
const int VALUE = 100000;

2.定义常量引用

创建一个引用,它必须绑定在一个已存在的常量对象上,并且不能通过这个引用来修改该对象。

cpp 复制代码
const int value = 10;
const int &ref = value; // 引用常量

3.常量指针

const 可以应用于指针,以限制指针指向的数据或指针本身的值。

指向常量的指针(只能通过这个指针读取数据,不能修改):

cpp 复制代码
const int ptr = &value;

常量指针(指针本身可的值可以改变,但指向的数据不能变):

cpp 复制代码
int value = 5;
int *const ptr = &value;
*ptr = 10; // 允许修改数据
// ptr = nullptr; // 错误:不能改变指针的值

4.指针常量

指针本身是一个常量,不能指向其他地址,但可以修改指针指向的数据(除非数据本身是 const)。

函数

成员函数

标记成员函数不会修改对象的状态。

cpp 复制代码
class MyClass {
public:
    void display() const {
        std::cout << value << std::endl;
    }
private:
    int value;
};

模板参数

模板参数可以是类型,也可以是常量表达式。

cpp 复制代码
template <typename T, const int N>
class Array {
    T data[N];
};

lamda表达式

Lambda 表达式可以捕获外部变量,并指定捕获的变量为 const。

cpp 复制代码
int value = 5;
auto lambda = [&value]() -> void {
    value = 10; // 错误:尝试修改 const 捕获的变量
};
auto safeLambda = [&value]() const -> void {
    // 可以访问 value,但不能修改
};

const_cast 操作符:

用于移除或添加 const 属性,通常用于指针或引用。

cpp 复制代码
const int* ptr = new int(5);
int* modifiablePtr = const_cast<int*>(ptr);

小结

其实,对于一个关键字,总共就几种情况,变量,函数,模板,lamda;一个例外,就是一些特殊的操作符。从这几个方面入手,会容易很多。相信你已经体会到了,有兴趣,可以一起学习学习。OK,翻篇!

相关推荐
FlightYe7 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
by209998 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
Rover Ramble8 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长9 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall9 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊9 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
你怎么知道我是队长12 小时前
C++零基础第3周:if/else、switch、for/while/do-while 控制流完全指南(附20段可运行代码+避坑清单)
java·开发语言·c++
青少儿编程课堂13 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛
雷✘14 小时前
C++ 类与对象的初始化机制、成员访问边界与拷贝优化
java·网络·c++
努力实干14 小时前
简单工厂模式(Simple Factory Pattern)——C++
开发语言·c++·简单工厂模式