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

C++进阶之操作符重载函数operator[]:用法实例(四百三十五)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者

博主新书推荐:《Android系统多媒体进阶实战》🚀
Android Audio工程师专栏地址: Audio工程师进阶系列原创干货持续更新中……】🚀
Android多媒体专栏地址: 多媒体系统工程师系列原创干货持续更新中……】🚀
推荐1:车载系统实战课地址:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀
推荐2:HIDL与AIDL实战课地址:Android14 Binder之HIDL与AIDL通信实战课 🚀
推荐3:Android15音效实战课地址:Android15快速自定义与集成音效实战课 🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

      • 🌻1. 前言
      • 🌻2. C++操作符重载函数operator[]介绍
      • 🌻3. 代码实例
        • 🌻3.1 一维安全数组带越界检查
        • 🌻3.2 二维矩阵行列访问
        • 🌻3.3 类中函数索引
      • 🌻3.4 操作符重载函数operator[]总结

🌻1. 前言

本篇目的:C++操作符重载函数operator[]用法实例

🌻2. C++操作符重载函数operator[]介绍

  1. 基本概念
    operator[]作为成员函数,把对象当数组使用,接收索引返回引用,支持读写及越界策略。

  2. 功能
    实现随机访问、下标检查、惰性创建、代理对象,可返回普通引用或嵌套代理类。

  3. 使用限制
    必须为成员函数;单参数对应索引;返回值常设计为引用以支持赋值;不可为静态。

  4. 性能特性
    编译器内联后与裸数组同速;边界检查可在调试期启用;代理类可延迟计算。

  5. 使用场景
    自定义矩阵、安全数组、稀疏表、缓存容器、多维数据包装。

🌻3. 代码实例

🌻3.1 一维安全数组带越界检查
  1. 应用场景
    运行时捕获非法下标。

  2. 用法实例

#include <iostream>
struct SafeArr {int buf[5];int& operator[](size_t i) {if (i >= 5) throw "out";return buf[i];}
};
int main() {SafeArr a;a[0] = 8;std::cout << a[0];
}

输出 8

🌻3.2 二维矩阵行列访问
  1. 应用场景
    图形计算中矩阵元素读写。

  2. 用法实例

#include <iostream>
struct Mat {double m[2][2];double* operator[](size_t r) { return m[r]; }
};
int main() {Mat M;M[1][1] = 3.14;std::cout << M[1][1];
}

输出 3.14

🌻3.3 类中函数索引
  1. 应用场景
    类中函数索引

  2. 用法实例

#include <iostream>
#include <vector>
using namespace std;template<class TYPE>
class SortedVector {
private:vector<TYPE> mArray;  public:// 添加元素的方法void add(const TYPE& item) { mArray.push_back(item);}// 定义 operator[] 函数const TYPE& operator[](size_t index) const {// 从容器中返回指定位置的元素return mArray[index];}// itemAt 调用 operator[]const TYPE& itemAt(size_t index) const {return operator[](index);  // 等价于 return (*this)[index];}// 获取大小size_t size() const {return mArray.size();}
};// 使用示例
int main() {SortedVector<int> vec;vec.add(10);vec.add(20);vec.add(30);// 方法1:直接使用 []int val1 = vec[0];           // 调用 operator[](0)// 方法2:调用 itemAtint val2 = vec.itemAt(0);    // 最终也是调用 operator[](0)// 方法3:显式调用 operator[]int val3 = vec.operator[](0);// 三种方式的结果相同,都是获取第0个元素cout << val1 << " " << val2 << " " << val3;  // 输出:10 10 10return 0;
}

🌻3.4 操作符重载函数operator[]总结

关键字功能描述典型应用
operator[]随机访问安全数组
return *返回引用矩阵元素
operator[]顺序访问顺序数组
http://www.dtcms.com/a/499744.html

相关文章:

  • 《小白学随机过程》第一章:随机过程——定义和形式(附录2. 随机变量和随机过程公式解读)
  • 近代通信技术的发展
  • 实用网站的设计与实现wordpress简介
  • 如何微信做演讲视频网站Wordpress刷新CDN缓存
  • macos虚拟机-演示篇一制作可启动iso文件
  • 论坛类网站备案今天东营发生的重大新闻
  • Aspect的AOP实现
  • Orleans Stream SubscriptionId 生成机制详解
  • FMIT,一款专业的乐器调音助手
  • 医疗器械招商网站大全建一个信息 类网站
  • 不用域名推广网站开源网站后台管理系统
  • 欧司朗与日亚签署广泛的知识产权协议
  • Kotlin 与 Java 互操作中常用注解
  • 计算机操作系统:程序的装入与链接
  • 怎么建设网站手机网站制作价格在线考试类网站怎么做
  • 3.1 栈
  • 国贸网站建设公司服务专业的网站建站公司
  • 手写观察者模式:原理、实现与应用
  • 商贸有限公司网站案例wordpress模版安装
  • Rclone、rsync、Docker 的 COPY/ADD:路径末尾加不加「/」的含义大不相同!
  • 【复习】计网每日一题1016--可分配
  • 【STM32】hal库 多通道ADC(+DMA)采集 连续模式
  • 网站收录量是什么意思开网站卖茶要怎么做
  • 软著下证又又+1
  • 常见分析方法与对应图表汇总
  • 【图像处理】常见图像插值算法与应用
  • Python爬虫入门:从零到数据采集
  • 免费创建app网站网站推广的基本方法是哪四个
  • 建设网站需要的资金清单建设银行网站会员怎么用
  • 深度学习——YOLO 原理与各版本演化