C++ 从入门到精通C++ 从入门到精通
首页
基础教程
进阶教程
实战项目
编程指南
首页
基础教程
进阶教程
实战项目
编程指南
  • 💪 进阶基础

    • 📚 C++ 进阶教程
    • 第8章 - 指针基础
    • 第9章 - 引用和动态内存
    • 第10章 - 结构体和枚举
    • 第11章 - 文件操作
    • 第12章 - 预处理器和命名空间
  • 🎯 面向对象编程

    • 第13章 - 类和对象基础
    • 第14章 - 构造函数和析构函数
    • 第15章 - 封装、继承、多态
    • 第16章 - 运算符重载
    • 第17章 - 模板基础
    • 第18章 - 异常处理
  • 📦 STL 标准模板库

    • 第19章 - Vector 和 String
    • 第20章 - 容器类
    • 第21章 - Map 和 Set
    • 第22章 - 算法和迭代器

第16章 - 运算符重载

嗨,朋友!我是长安。

运算符重载让我们可以为自定义类型定义运算符的行为,就像内置类型一样使用。

➕ 基本运算符重载

class Complex {
private:
    double real, imag;
    
public:
    Complex(double r = 0, double i = 0) : real(r), imag(i) {}
    
    // 重载 + 运算符
    Complex operator+(const Complex& other) {
        return Complex(real + other.real, imag + other.imag);
    }
    
    // 重载 << 运算符(友元函数)
    friend ostream& operator<<(ostream& out, const Complex& c) {
        out << c.real << " + " << c.imag << "i";
        return out;
    }
};

int main() {
    Complex c1(3, 4);
    Complex c2(1, 2);
    Complex c3 = c1 + c2;  // 使用重载的+运算符
    
    cout << c3 << endl;  // 使用重载的<<运算符
}

🔍 常用运算符重载

class Vector {
private:
    int x, y;
    
public:
    Vector(int a = 0, int b = 0) : x(a), y(b) {}
    
    Vector operator+(const Vector& v) { return Vector(x + v.x, y + v.y); }
    Vector operator-(const Vector& v) { return Vector(x - v.x, y - v.y); }
    bool operator==(const Vector& v) { return x == v.x && y == v.y; }
    
    friend ostream& operator<<(ostream& out, const Vector& v) {
        out << "(" << v.x << ", " << v.y << ")";
        return out;
    }
};

➡️ 第17章 - 模板基础

最近更新: 2025/12/26 17:25
Contributors: 王长安
Prev
第15章 - 封装、继承、多态
Next
第17章 - 模板基础