const注意大全

server/2025/1/23 14:34:23/

1. 成员函数的 const 限定符

当在类的成员函数声明或定义中使用 const 时,表示该成员函数不会修改对象的状态(即不会修改对象的非静态数据成员)。

示例
class MyClass {
public:void nonConstMethod();  // 非 const 成员函数void constMethod() const;  // const 成员函数
};void MyClass::nonConstMethod() {// 可以修改对象的状态someData = 10;
}void MyClass::constMethod() const {// 不能修改对象的状态// someData = 10;  // 编译错误
}private:int someData;
};

2. 函数返回值的 const 限定符

当函数返回一个 const 类型的值时,表示该返回值不能被修改。

示例
class MyClass {
public:const int getData() const {return data;}
private:int data;
};

在这个例子中,getData 函数返回一个 const int,这意味着调用者不能修改返回的值。

        即使成员函数被声明为 const,如果该函数返回一个非 const 引用,调用者仍然可以通过返回的引用修改对象的状态。这是因为 const 限定符只限制了函数内部的行为,而不影响返回值的性质。 

  1. const 成员函数int& funci() const 声明为 const 成员函数,表示该函数不会修改对象的状态。
  2. 返回非 const 引用:函数返回一个非 const 引用 int&,这意味着调用者可以通过这个引用修改对象的内部状态。
  3. 修改对象状态:即使对象本身是 const 的(如 const MyClass obj),调用者仍然可以通过返回的引用修改对象的状态。

如果你不希望调用者通过返回的引用修改对象的状态,可以返回一个 const 引用:

const int& funci() const { return array[1]; }

3. 指针参数的 const 限定符

对于指针参数,const 可以应用于指针本身或指针所指向的对象。

示例
  • 指向常量的指针(指针本身可以改,但指向的数据不能改)
void func(const int* ptr) {// *ptr = 10;  // 编译错误ptr = nullptr;  // 允许
}
  • 常量指针(指针本身不能改,但指向的数据可以改)
void func(int* const ptr) {// ptr = nullptr;  // 编译错误*ptr = 10;  // 允许
}
  • 常量指针指向常量(指针本身和指向的数据都不能改)
void func(const int* const ptr) {// ptr = nullptr;  // 编译错误// *ptr = 10;  // 编译错误
}

 

 


http://www.ppmy.cn/server/160760.html

相关文章

【动态规划】--- 斐波那契数模型

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 🏠 第N个泰波那契数模型 📌 题目解析 第N个泰波那契数 题目要求的是泰波那契数,并非斐波那契数。 &…

算法竞赛赛制介绍

引言 在信息学领域,竞赛是检验选手能力、促进技术交流的重要方式。而不同的信息学竞赛采用了各具特色的赛制,这些赛制不仅影响着选手的参赛策略,也从不同角度考察了选手的编程技能和思维能力。本文将详细介绍信息学竞赛中常见的几种赛制。 OI 赛制(Olympiad in Informatic…

小哆啦解题记:加油站的奇幻冒险

小哆啦解题记:加油站的奇幻冒险 小哆啦开始力扣每日一题的第十三天 https://leetcode.cn/problems/gas-station/description/ 在环形道路上,矗立着一串加油站,宛如等待挑战的谜题。这条路上的每个加油站都有一桶汽油,而开车到下一…

CentOS 7 安装fail2ban hostdeny方式封禁ip —— 筑梦之路

centos 7 换源参考CentOS 7.9 停止维护(2024-6-30)后可用在线yum源 —— 筑梦之路_centos停止维护-CSDN博客 安装fail2ban yum install fail2ban 新增配置文件 cat > /etc/fail2ban/action.d/hostsdeny.conf << EOF [Definition] actionstart actionstop action…

Jetbrains 官方微信小程序插件已上线!

就在昨天&#xff0c;Jetbrains官方发布了一篇文章&#xff0c;宣布它们发布了一款专用于微信小程序开发的插件&#xff08;插件名称&#xff1a;WeChat Mini Program&#xff09;&#xff0c;至此&#xff0c;大家可以使用Jetbrains家的IDE&#xff08;例如IDEA、WebStorm&…

【Linux】APT 密钥管理迁移指南:有效解决 apt-key 弃用警告

引言 随着 Debian 11 和 Ubuntu 22.04 版本的推出&#xff0c;APT 的密钥管理方式发生了重大的变化。apt-key 命令被正式弃用&#xff0c;新的密钥管理机制要求使用 /etc/apt/keyrings/ 或 /etc/apt/trusted.gpg.d/ 来存储和管理密钥。这一变化对管理员和普通用户来说至关重要…

小盒科技携手体验家,优化智能教育服务体验,打造在线教育新高度

北京小盒科技有限公司&#xff08;简称“小盒科技”&#xff0c;由“作业盒子”更名而来&#xff09;是一家专注于教育科技的公司&#xff0c;致力于利用人工智能、大数据等先进技术&#xff0c;为中小学教育提供创新的解决方案和产品。 近日&#xff0c;「小盒科技」携手体…

STM32学习9---EXIT外部中断(理论)

本文参考江科大和其他博主&#xff0c;侵删&#xff01; 中断系统是管理和执行中断的逻辑结构 &#xff0c;外部中断是产生中断的外设之一。 一、STM32中断 1、中断基本介绍 68个可屏蔽中断通道&#xff08;中断源&#xff09;&#xff0c;包含EXTI外部、TIM定时器、ADC模数…