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

360优化大师官方网站网站运营成本

360优化大师官方网站,网站运营成本,怎么拥有网站的所有权,米拓做的网站如何改代码函数后的 const 关键字 1. 含义与作用 成员函数(或运算符)参数列表后的 const 关键字表明:这是一个“常量成员函数”。 它向编译器做出承诺:这个函数不会修改其所属对象的任何非静态成员变量(mutable 修饰的变量除外&a…

函数后的 const 关键字

1. 含义与作用

成员函数(或运算符)参数列表后的 const 关键字表明:这是一个“常量成员函数”

它向编译器做出承诺:这个函数不会修改其所属对象的任何非静态成员变量(mutable 修饰的变量除外)

2. 为什么需要它?
  1. 设计意图与安全性:它明确了函数的职责。如果一个函数在逻辑上不应该修改对象状态(比如 getter 方法、计算并返回结果的函数),就应该声明为 const。这防止了你在函数内部无意中修改成员变量,编译器会阻止这种行为。
  2. 使对象能被常量对象调用:这是最关键的作用。一个被声明为 const 的对象(或对象的常量引用/指针),只能调用其类的 const 成员函数

示例:

class MyString {
private:char* m_data;int m_length;
public:// const 成员函数:承诺不修改对象状态int length() const { // 这是一个 getter,不会修改成员变量// m_length = 10; // 错误!编译器会报错,不能在 const 函数内修改成员return m_length;}// 非 const 成员函数:允许修改对象状态void clear() { // 这个函数需要修改对象,所以不能是 const 的// ... 清理 m_data 的操作m_length = 0; // 这是允许的}
};int main() {MyString s1;const MyString s2; // 常量对象std::cout << s1.length(); // 正确:非const对象可以调用const函数std::cout << s2.length(); // 正确:const对象可以调用const函数s1.clear(); // 正确:非const对象可以调用非const函数// s2.clear(); // 错误!编译失败:const对象不能调用非const成员函数//(因为clear()可能修改s2的状态,这违反了s2的常量性)return 0;
}
3. 重写与 const 的关系

在重写虚函数时,函数签名必须完全一致。这包括 const 属性。如果基类中的虚函数是 const 的,那么派生类中重写的函数也必须是 const 的(反之亦然),否则加上 override 会导致编译错误,因为它们被认为是两个不同的函数。

class Base {
public:virtual void print() const { // const 成员函数std::cout << "Base";}
};class Derived : public Base {
public:void print() const override { // 正确:签名一致,都是 conststd::cout << "Derived";}// void print() override { // 错误!缺少 const,不是有效的重写//     std::cout << "Derived";// }
};
4. 总结 - 函数后的 const
  • 目的:保证函数不修改对象状态,并允许常量对象调用该函数。
  • 用法:放在成员函数的参数列表之后。
  • 最佳实践如果一个成员函数确实不需要修改任何成员变量,就一定要将其声明为 const。这是设计良好类接口的重要原则。
http://www.dtcms.com/a/600848.html

相关文章:

  • 北京网站seo优化推广招聘网最新招聘信息网
  • 【代码】TorchCFM(Conditional Flow Matching library)代码入门
  • C++主流日志库深度剖析:从原理到选型的全维度指南
  • CAD/CASS 无法复制到剪贴板
  • C语言在线编译环境 | 轻松学习C语言编程,随时随地在线编程
  • C语言在线编译器开发 | 提供高效、易用的在线编程平台
  • 东莞专业做网站的公司有哪些安徽建设工程信息网技术服务电话
  • 【前端面试】Git篇
  • Oracle RAC 再遇 MTU 坑:cssd 无法启动!
  • 用asp做网站怎么布局t型布局网站的优缺点
  • OpenGL lookAt 函数 参数说明
  • 【刷题笔记】 AOV网的拓扑排序
  • 3D TOF 视觉相机:以毫秒级三维感知,开启智能交互新时代
  • 快速配置 HBase 完全分布式(依赖已部署的 Hadoop+ZooKeeper)
  • 深圳网站搜索排名产品软文范例软文
  • 手机网站关键词seo网站 模板 html
  • 多模态工程师面试--准备
  • 安全迁移Windows个人文件夹至非C盘:分步教程与避坑指南
  • 多智能体框架AgentScope 1.0 深度技术剖析:架构、场景、选型与实战指南
  • flinkcdc抽取postgres数据
  • SpringCloud Gateway缓存body参数引发的问题
  • Qt跨平台:Linux与Windows
  • 【数据集分享】汽车价格预测数据集
  • 汽车网络安全综合参考架构
  • 亚远景-ISO 26262与ISO 21434:未来汽车安全标准的发展趋势
  • Leverege 携手谷歌云和BigQuery,赋能大规模企业级物联网(IoT)解决方案
  • 国外网站服务器免费网站被做跳转
  • 分享一个我自用的 Python 消息发送模块,支持邮件、钉钉、企业微信
  • 南昌商城网站建设网页设计作业文件
  • 物联网传感器数据漂移自适应补偿与精度动态校正技术