C++操作符重载案例

C/C++: 操作符重载案例 1 案例:+ ,- ,++, -- // 操作符重载.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" class Fraction { public: Fraction(): num(2),den(1){ //默认值 } Fraction(int n,int d):num(n),den(d){ } ~Fraction(); 阅读详情

        在学习ZLToolKit源码时,发现代码中涉及好多运算符重载,因此对其做一下归类学习。

        直接写一个代码案例如下:

#include <iostream>
#include <memory>
#include <functional>

// 定义类 A
class A {
public:
    A(int a) { _a = a;  }

    // 重载()
    std::string operator()(std::string s) {
        std::cout << "-----operator () -----" << std::endl;
        return s;
    }

    // 重载bool类型
    operator bool() {
        std::cout << "-----operator bool -----" << std::endl;
        return _a > 0;
    }

    // 重载int类型
    operator int() {
        std::cout << "-----operator int -----" << std::endl;
        return _a;
    }

    // 重载=运算法,入参(被赋值类型int)
    A operator= (int a) {
        std::cout << "-----operator =(int) -----" << std::endl;
        _a = a;
        return *this;
    }

    // 重载=运算法,入参(被赋值类型A)
    A operator= (A a) {
        std::cout << "-----operator =(A) -----" << std::endl;
        _a = a._a;
        return *this;
    }

    // 重载函数指针,将类对象当做一个函数指针调用。也可以通过重载()实现
    using func = int (*)(int, int);
    operator func() {
        std::cout << "-----operator func -----" << std::endl;
        // 返回的函数地址必须是类的静态成员函数地址
        return myfunc;
    }

    static int myfunc(int a, int b) {
        return a + b;
    }

private:
    int _a;
};

int main() {
    // 创建类 A 的实例
    A a(100), b(100), c(100);

    // 调用重载bool类型函数
    if (a) {
        // 调用重载int类型函数
        std::cout << (int)a  << std::endl;
        // 调用重载bool类型函数
        std::cout << (bool)a << std::endl;
    }
    
    // 调用重载=(int)运算法
    b = 222;

    // 调用重载int类型函数
    std::cout << (int)b << std::endl;

    // 调用重载=(A)运算法
    a = b;
    // 调用重载int类型函数
    std::cout << (int)a << std::endl;

    // 先调用重载=(int)运算法,再调用重载=(A)运算法
    c = b = 300;
    // 调用重载int类型函数
    std::cout << (int)c << std::endl;

    // 调用重载()运算符
    std::cout << c("this is test") << std::endl;

    // 调用重载函数指针
    int sum = c(12, 13);
    std::cout << sum << std::endl;
    return 0;
}

执行结果分析如下:

C++之操作符重载(三) #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <iostream> using namespace std;class Parent { protected: char *pName; int age;public: friend ostream& operator<<(ostream& os,con 阅读详情

相关推荐

C++操作符重载实战教程与代码案例

在自定义容器类中,实现迭代器是常见的需求。这时,操作符重载同样重要。用户自定义迭代器需要重载解引用操作符和指针访问操作符->,以便和STL算法无缝协作。这些操作符重载需要符合迭代器协议,比如支持指针算术运算和迭代器失效原则。public:private:通过以上章节内容的介绍和示例代码展示,我们了解了操作符重载在类设计和复杂数据结构实现中的应用。在实际开发过程中,根据具体需求合理设计操作符重载,能够使代码更加简洁、易懂且高效。

weixin_30951515的博客 928

C++复数案例-操作符重载系列

复数案例-操作符重载系列 试题 1 题目描述如下: 本程序后缀 int main() { Cmycomplex z1(2,3),z2,z3(3); z1.Show(); } 如题,要求实现: 1、复数类含两个参数的构造函数,一个为实部,一个为虚部 2、用Show()现实复数的值。 输出 (2+3i) 答案如下: #include<iostream> using namespace std; class Cmycomplex { public: Cmycomplex(double , do

Jerwy_Suy的博客 800

C++中操作符重载的概念与实践

自定义迭代器是用户定义的迭代器类型,它可以遍历自定义容器,并且允许按照顺序访问容器中的元素。通过重载操作符,自定义迭代器可以模拟指针的行为,使遍历操作变得简洁。public:// 假设容器中有begin()和end()方法提供迭代器的起始和结束位置// 实现前置递增操作,移动迭代器到下一个元素// 实现后置递增操作,移动迭代器到下一个元素,并保存当前状态// 其他操作符重载通过重载operator++,自定义迭代器可以利用++it这样的简洁语法进行遍历。

weixin_36311421的博客 1112

【C++】运算符重载案例 - 字符串类 ② ( 重载 等号 = 运算符 | 重载 数组下标 [] 操作符 | 完整代码示例 )

一、重载 等号 = 运算符 1、等号 = 运算符 与 拷贝构造函数 2、重载 等号 = 运算符 - 右操作数为 String 对象 3、不同的右操作数对应的 重载运算符函数 4、重载 等号 = 运算符 - 右操作数为 字符串指针 二、重载 下标 [] 运算符 三、完整代码示例 1、String.h 类头文件 2、String.cpp 类实现 3、Test.cpp 测试类 4、执行结果

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2240

linux虚拟机和电脑ping通(可上网)

linux虚拟机(Ubuntu)和电脑ping通。

观则明的博客 4117

TASK02【datawhale组队学习】视觉感知与手眼协调,计算机视觉在机器人中应用,手眼标定算法实现,深度估计与3D重建

参考教程AI硬件与机器人技术教程:https://github.com/datawhalechina/ai-hardware-robotics视觉感知与手眼协调,计算机视觉在机器人中应用,手眼标定算法实现,深度估计与3D重建单目深度估计 (Monocular Depth Estimation)DPT 的全称是 Dense Prediction Transformer。

m0_52024881的博客 1191

重载操作符

重载操作符就是让操作符作用域非内置类型时也有自己独特的意义。 对于内置类型,当操作符作用于它们时,编译器会规定操作的意义:两个int型数据相加的结果与数学运算的加法相同。但是对于非内置类型,比如类或者枚举类型,编译器并没有规定操作符作用于它们的意义。有些时候,这样做是合理的,比如对于两个Student类对象(其中的数据成员有姓名、学号),对它们进行加法操作的确没有什么意义;但是有的时候,我们却希

thefutureisour的专栏 1万+

BPMN2.0规范及流程引擎选型方案

本文主要简明扼要的介绍了BPMN2.0规范的内容,可让读者快速度的了解BPMN2.0所涵盖的主要内容和图形样式。也较为详细的阐述了如何绘制标准的流程图,以及在软件层面中如何实现业务流程功能,和技术选型。

比特桃 1万+

Chapter 24.重载操作符与转换

概述 重载操作符是C++为类专门设计的一种机制,可以使类对象像内置类型一样的使用 四个不能重载的运算符 .类成员运算符 .* 成员指针运算符 :: 域解析运算符 ?: 条件表达式运算符 重载的一些要求 1.重载后的运算符与原先运算符的形参数、操作数数目、优先级、结合性要一致 2.不能重载c++中不存在的运行符 3.重载操作符必须有一个类类型或者枚举类型的操作数 4.+、-

vv_VV_vv 998

压电陶瓷传感器避坑指南:实测阻抗匹配对信号输出的影响(附示波器调试技巧)

本文深入探讨压电陶瓷传感器在工业振动监测中的阻抗匹配问题,通过等效电路模型和实测数据揭示负载阻抗对信号输出的关键影响。文章提供从元件选型到示波器调试的完整解决方案,特别强调100kΩ以上负载阻抗的重要性,并分享JFET缓冲器设计和PCB布局的实用技巧,帮助工程师避免信号失真和输出不稳定问题。

ooo22的博客 516

【Ubuntu】RK3576 Linux 6.10 Ubuntu 22.04 系统中 HUSB311 Type-C 转 DP 显示输出与 Device/OTG 模式切换配置详解

本文详细介绍了在Rockchip RK3576开发板(Linux Kernel 6.10+Ubuntu 22.04)上配置HUSB311 Type-C控制器的设备树实现方案。主要内容包括:1)硬件连接与模块组成;2)设备树完整配置,涵盖Type-C供电、USB OTG/Host模式、DP显示输出等关键功能;3)软件配置步骤与常见问题排查方法。该方案实现了Type-C接口的DisplayPort AltMode显示输出、USB Device/Host模式自动切换等功能,为嵌入式系统Type-C接口开发提供参考

qq_34478161的博客 808

c++操作符重载实现

为什么要用操作符重载 首先我们看一个例子。 class Complex { public: int a; int b; public: Complex(int a = 0,int b=0) { this->a = a; this->b = b; } void print() { cout cout } };     void main01() {

shikelang_pp的博客 323

【图像去噪】论文精读:FM2S: Self-Supervised Fluorescence Microscopy Denoising With Single Noisy Image

论文题目:FM2S: Self-Supervised Fluorescence Microscopy Denoising With Single Noisy Image —— FM2S:单噪声图像自监督荧光显微镜去噪arXiv 2024!显微图像去噪!通过可视化详细的细胞结构和生物过程,荧光显微镜具有显着先进的生物学研究。然而,由于难以精确建模固有噪声和获取干净图像进行训练,这种图像去噪任务往往面临挑战,这限制了大多数现有方法。在本文中,我们提出了一种有效的。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 408

【C++重载操作符与转换】重载操作符的定义

在C++中,操作符重载(Operator Overloading)是一项强大的特性,它允许开发者为自定义类型(如类或结构体)重新定义内置操作符的行为。通过重载操作符,可以使自定义类型的对象表现得像内置类型一样自然,从而提升代码的可读性和可维护性。然而,操作符重载也是一把双刃剑,如果使用不当,可能会导致代码难以理解和调试。

byte轻骑兵的技术小窝 2078

【总目录】AUTOSAR精进之路专栏介绍及内容目录持续更新...

本专栏系统讲解AUTOSAR汽车电子开发技术,包含Eth/OS/Can/Lin等协议栈、MCAL驱动、功能安全等核心模块。内容基于实际项目经验,从概念原理到工程配置、特殊需求实现及问题排查进行深入剖析。重点涵盖TC3xx芯片平台开发、多核OS、网络管理、存储协议栈等难点问题,提供100+篇原创技术文章。专栏采用付费模式,保证内容完整性和持续更新,并提供专业答疑服务。适合汽车电子工程师系统学习AUTOSAR开发技术。

qq_36056498的博客 6505

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

把我弄混淆的操作符重载

《windows核心编程》里有看到这样一句话: g_mmf[dwOffset * 1024] = (BYTE) GetDlgItemInt(hWnd, IDC_BYTE, NULL, FALSE);CMMFSparse g_mmf; g_mmf是个类。把等号两边的内容换成等价的代码就成了:g_mmf[0] = 10; 我的第一感觉就是,类重载了[]操作符,找

dmxjMao的博客 440

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

c++操作符重载

491

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

15.C++-操作符重载、并实现复数类

首先回忆下以前学的函数重载 函数重载 函数重载的本质为相互独立的不同函数 通过函数名和函数参数来确定函数调用 无法直接通过函数名得到重载函数的入口地址 函数重载必然发生在同一个作用域中 类中的函数重载 静态成员函数能与普通成员函数建立重载关系 全局函数和成员函数不能构成重载关系 操作符重载(operator) 什么是操作符重载? 大家都知道,在C里,...

weixin_30430169的博客 99

【C++重载操作符与转换】输入和输出操作符

在 C++ 编程中,操作符重载是一项强大的特性,它允许我们为自定义数据类型赋予运算符新的含义,使其能像内置类型一样自然地参与各种操作。输入(>>)和输出(<<)操作符作为与用户交互的重要接口,对它们进行合理重载能极大提升自定义类型的易用性和可读性。

byte轻骑兵的技术小窝 1251

所有C++操作符重载的例子

1.[ ]操作符重载 C++语言规定:“[ ]”只能作为类的成员函数进行重载。 “[ ]”是C++中的下标运算符,对于数组或指针来说,下表运算的语义是确定的,不能进行重载。因此,如果看到一个运算结果不是数组或指针的表达式后跟“[ ]”运算符,一定是对“[ ]”进行了重载。 一个例子: #include using namespace std; class A { int num

chijianxingfeng的专栏 3733

操作符重载手册

操作符重载手册 反正我是总忘了某些重载如何写,从网上弄下来这篇文章,需要的时候查阅一下,很舒服。共享之! 一、重载规则 I.可以重载的操作符 + - * / % ^ & | ~ ! = > < += -= *= /= %= ^= &= |= >> << >>= <<= == != >= <=

凡星闪点 701

14.1 操作符重载

逗号、赋值、取地址、逻辑与、逻辑或这类函数有默认含义,程序员对这些默认含义都了然于胸,贸然的修改定义会严重的违反使用者直觉逗号,从左至右计算,返回最右侧的值赋值,逐个成员赋值,依次调用每个成员的赋值函数取地址,取对象的内存地址逻辑与/逻辑或,对数值类型,非0即true;短路操作。

你若盛开,清风自来 281
上一篇: 调用openssl实现加解密算法
下一篇: C++调用ffmpeg解复用、解码案例
码农诗人
博客等级 码龄11年 987粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值