首页 > 编程语言 >C++系列十:日常学习-操作符重载

C++系列十:日常学习-操作符重载

时间:2023-09-06 09:46:02浏览次数:37  
标签:const C++ value operator other 操作符 MyNumber 重载 return

目录

介绍:

在 C++ 中,操作符重载(Operator Overloading)是一种允许我们自定义或改变某些操作符的行为的技术。

案例:

单个参数的简单例子:
#include <iostream>  
  
class MyNumber {  
private:  
    double value;  
  
public:  
    MyNumber(double v) : value(v) {}  
  
    // Overload + operator  
    MyNumber operator+(const MyNumber& other) const {  
        return MyNumber(value + other.value);  
    }  
  
    // Overload - operator  
    MyNumber operator-(const MyNumber& other) const {  
        return MyNumber(value - other.value);  
    }  
  
    // Overload * operator  
    MyNumber operator*(const MyNumber& other) const {  
        return MyNumber(value * other.value);  
    }  
  
    // Overload / operator  
    MyNumber operator/(const MyNumber& other) const {  
        if(other.value != 0.0) {  
            return MyNumber(value / other.value);  
        } else {  
            std::cout << "Error: Division by zero." << std::endl;  
            return MyNumber(0.0);  
        }  
    }  

    // Overload += operator  
    MyNumber& operator+=(const MyNumber& other) {  
        value += other.value;  
        return *this;  
  
    void printValue() const {  
        std::cout << value << std::endl;  
    }  
};  
  
int main() {  
    MyNumber a(11.0);  
    MyNumber b(2.0);  
    MyNumber c = a + b;  
    c.printValue();  // Output: 13.0  
    MyNumber d = a - b;  
    d.printValue();  // Output: 9.0  
    MyNumber e = a * b;  
    e.printValue();  // Output: 22.0  
    MyNumber f = a / b;  
    f.printValue();  // Output: 5.5  

    a += b;          // a = a + b;  
    c.printValue();  // Output: 23.0  
    return 0;  
}

标签:const,C++,value,operator,other,操作符,MyNumber,重载,return
From: https://www.cnblogs.com/zhouyitty/p/17681471.html

相关文章

  • C++ auto用作函数参数
    c++11中auto不能用作函数参数。在gccversion8.1.0(x86_64-win32-seh-rev0,BuiltbyMinGW-W64project)--C++14中可以运行,会警告:useof'auto'inparameterdeclarationonlyavailablewith-fconcepts......
  • 《C++并发编程实战》读书笔记(4):原子变量
    1、标准原子类型标准原子类型的定义位于头文件<atomic>内。原子操作的关键用途是取代需要互斥的同步方式,但假设原子操作本身也在内部使用了互斥,就很可能无法达到期望的性能提升。有三种方法来判断一个原子类型是否属于无锁数据结构:所有标准原子类型(std::atomic_flag除外,因为它......
  • C++学习笔记
    C++:C的编译器叫gcc,C++的编译器叫g++c++最容易发生的问题是内存泄漏问题,例如释放p所指的空间时,应该是free(p);p=NULL;很多人忘记将p归零,这样下次不小心调用了p就会出现内存泄漏问题,如果要把释放内存写成函数,示例如下(两层指针)voidfree_mem(int**pp){if(pp==NULL......
  • C++中虚继承时的构造函数
    在虚继承中,虚基类是由最终的派生类初始化的,换句话说,最终派生类的构造函数必须要调用虚基类的构造函数。对最终的派生类来说,虚基类是间接基类,而不是直接基类。这跟普通继承不同,在普通继承中,派生类构造函数中只能调用直接基类的构造函数,不能调用间接基类的。下面我们以菱形继承为例来......
  • C++语言学习09
    STL标准模版库STL是StandardTemplateLibrary的缩写,中文名标准模版库,由惠普实验室提供(使用C++模板语言封装的常用的数据结构与算法)STL中有六大组件:算法:以函数模板形式实现的常用算法,例如:swap\max\min\find\sort容器:以类模板的形式实现的常用的数据结构,例如:vector\list\arra......
  • 1 C++基础问题总结
    C++基础1C和C++有什么区别?C++是面向对象,C面向过程C++引入new/delete运算符,取代了C中的malloc/free库函数;C++有引用的概念,C没有C++有类的概念,C没有C++有函数重载,C没有2a和&a有什么区别?比如inta[10];int(*p)[10]=&aa是数组名,是数组首元素地址,+1表示地址值加上一......
  • C++中模块(DLL)对外暴露接口的几种方式
    函数导出:通过在函数前面加上导出修饰符(如__declspec(dllexport))来导出函数。优点是简单易用,缺点是无法避免函数名冲突,且需要手动导出每个函数。.def文件:通过定义一个.def文件,在其中指定要导出的函数名和入口点。优点是可以一次性导出多个函数,缺点是需要额外的.def文件,且与代码分......
  • c++/c中关于头文件的探索
    //Fin.h#ifndefFIN_H#defineFIN_Hintadd(inta,intb);#endif//Fin.cpp#include"Fin.h"intadd(inta,intb){returna+b;}//Test1.cpp#include<iostream>#include"Fin.h"//包含Fin.h来调用函数intmain(){......
  • c++11新特性
    这篇文章基本上涵盖了c++11的所有新特性,并有详细代码介绍其用法,对关键知识点做了深入分析,对重要的知识点我单独写了相关文章并附上了相关链接,我还准备了完整版c++新特性脑图,有需要可以去我的gz号回复“新特性”下载,见文章最后。auto&decltype关于C++11新特性,最先提到的肯定......
  • C++14新特性
    这篇文章介绍下C++14的新特性。 函数返回值类型推导 C++14对函数返回类型推导规则做了优化,先看一段代码: #include<iostream>usingnamespacestd;autofunc(inti){returni;}intmain(){cout<<func(4)<<endl;return0;} 使用C++11编......