首页 > 编程语言 >c++重载

c++重载

时间:2024-01-27 14:14:46浏览次数:27  
标签:int c++ 运算符 Complex result 重载 MyClass

函数或运算符重载是指在同一作用域内定义多个具有相同名称但参数类型或数量不同的函数或运算符。重载允许使用相同的名称执行不同的操作,具体的操作根据传递给函数或运算符的参数类型或数量而定。(和Java重载一样直接和Java重载联系到一起)大致分为两类函数和运算符的重载

函数重载: 允许在同一作用域内定义多个具有相同名称但参数列表不同的函数。例如:

int add(int a, int b) {
    return a + b;
}

double add(double a, double b) {
    return a + b;
}

运算符重载: 允许在用户定义的类中重新定义运算符的行为。例如: 

class Complex {
public:
    double real;
    double imag;

    Complex operator+(const Complex& other) const {
        Complex result;
        result.real = real + other.real;
        result.imag = imag + other.imag;
        return result;
    }
};

int main() {
    Complex c1 = {1.0, 2.0};
    Complex c2 = {3.0, 4.0};
    Complex result = c1 + c2;  // 通过运算符重载执行复数的加法
    return 0;
}

  下面就写一下运算符重载,因为刚好做到阶乘的和通过高精度算法来求,格式(下面的是全局函数重载,有个成员函数重载的就先不管了)

返回类型 operator运算符(参数列表) {
    // 运算符的实现
}

  

#include <iostream>

class MyClass {
public:
    int value;

    MyClass(int val) : value(val) {}
};

// 全局函数重载 + 运算符
MyClass operator+(const MyClass& obj1, const MyClass& obj2) {
    MyClass result;
    result.value = obj1.value + obj2.value;
    return result;
}

int main() {
    // 步骤 1: 创建类的对象
    MyClass obj1(5);
    MyClass obj2(10);

    // 步骤 2: 使用函数名和对象调用全局函数重载运算符
    MyClass result = operator+(obj1, obj2);

    // 输出结果
 cout << "Result: " << result.value << endl;

    return 0;
}

  

 

标签:int,c++,运算符,Complex,result,重载,MyClass
From: https://www.cnblogs.com/sixsix666/p/17991365

相关文章

  • 【C++入门到精通】C++入门 —— list (STL)
    @TOC前言文章绑定了VS平台下std::list的源码,大家可以下载了解一下......
  • 在ubuntu22上使用C++20
    Linux系统ubuntu22.04安装最新版的gcc13.1.0编译器,支持c++20、23_gcc-13.1.0.tar.gz下载-CSDN博客ubantu20安装多个版本的gcc/gc++编译器_ubuntu安装多个gcc-CSDN博客5步在Ubuntu22上使用C++201.安装build-essentialsudoaptinstallbuild-essential安装完检查/us......
  • C++教程——初识c++(循环,判断,跳转语句)
    在程序设计中,循环语句的使用十分重要,不同的需求需要用到不同的循环语句,对各种循环语句的熟练使用是学好程序设计的关键。接下来就来介绍循环语句及其使用。对于while循环来说,注意判断条件的使用,do...while语句要注意,它至少会执行一次do中的代码块,这是需要注意到的,对于for循环来说,括......
  • KY188 哈夫曼树C++
    用(优先队列)小根堆,先构建哈夫曼树,然后在递归遍历输出WPL。 #include<iostream>#include<queue>usingnamespacestd;structnode{intdata;structnode*left;structnode*right;};typedefstructnodetree;booloperator<(treeleft,treeright){......
  • 【C++】前置声明导致的代码含义改变
    真的有这么离谱的事哈哈哈哈。//F.hstructF{};structS:F{};//User.h#include<iostream>structF;structS;structUser{voidf(F*){std::cout<<"F"<<std::endl;}voidf(void*){std::cout<<"void"<......
  • 【C++】 select函数介绍
    在使用C++语言开发网络应用程序时,常常需要用到select函数。select函数是一种多路复用机制,可以同时监听多个文件描述符上可读、可写、异常等事件,从而让程序能够高效地处理多个连接。下面详细介绍C++中的select函数。1.select函数的定义和作用select函数的定义为:intselect(intn......
  • C++ RALL机制理解
    #########################RALL机制(将资源的生命周期与对象的生命周期所绑定(构造获取资源/析构释放资源,利用了栈上的变量在离开作用域的时候会析构的特性)RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,......
  • C++ 单例模式
    单例模式写法:注意:静态成员使用指针的话,程序退出时无法指针类的析构函数,在类内添加回收单例的类,析构的时候将该单例对象析构,就可以了例如:classSingleton{public: staticSingleton*getInstance() { if(m_pInstance==nullptr)//静态成员使用指......
  • C转C++速成浅入浅出系列——STL之queue
    本系列为应付考研复试用,知识浅入浅出,很多地方不深究细节原理;如有谬误,欢迎大家指出。queue【queue:队伍,队列】(学过数据结构的熟的不能再熟了吧)理解为队列。特点是①先入先出②只能对队伍的队首进行出队操作,对队伍的队尾进行入队操作。需提供头文件#include<queue>由于队列的......
  • C转C++速成浅入浅出系列——STL之stack
    本系列为应付考研复试用,知识浅入浅出,很多地方不深究细节原理;如有谬误,欢迎大家指出。stack【stack:栈】(学过数据结构的熟的不能再熟了吧)理解为栈。特点是①先入后出②只能操作栈顶元素需提供头文件#include<stack>由于栈的特性,只能对栈顶元素进行操作,故不可使用.begin()方法......