首页主机资讯c++ complex类的运算符重载如何实现

c++ complex类的运算符重载如何实现

时间2024-09-10 14:56:03发布访客分类主机资讯浏览1357
导读:在C++中,std::complex是一个模板类,用于表示复数。它已经为你提供了一系列运算符重载,例如+、-、*和/,以及相等和不等运算符。然而,如果你想要自定义一个复数类并实现这些运算符重载,以下是一个简单的示例: #include<...

在C++中,std::complex是一个模板类,用于表示复数。它已经为你提供了一系列运算符重载,例如+-*/,以及相等和不等运算符。然而,如果你想要自定义一个复数类并实现这些运算符重载,以下是一个简单的示例:

#include<
    iostream>


class Complex {

public:
    Complex(double real, double imag) : real_(real), imag_(imag) {
}


    // Getters
    double real() const {
     return real_;
 }

    double imag() const {
     return imag_;
 }
    

    // Operator overloads
    Complex operator+(const Complex&
 other) const {
    
        return Complex(real_ + other.real_, imag_ + other.imag_);

    }
    

    Complex operator-(const Complex&
 other) const {
    
        return Complex(real_ - other.real_, imag_ - other.imag_);

    }
    

    Complex operator*(const Complex&
 other) const {
    
        double real_part = real_ * other.real_ - imag_ * other.imag_;
    
        double imag_part = real_ * other.imag_ + imag_ * other.real_;
    
        return Complex(real_part, imag_part);

    }
    

    Complex operator/(const Complex&
 other) const {
    
        double denominator = other.real_ * other.real_ + other.imag_ * other.imag_;
    
        double real_part = (real_ * other.real_ + imag_ * other.imag_) / denominator;
    
        double imag_part = (imag_ * other.real_ - real_ * other.imag_) / denominator;
    
        return Complex(real_part, imag_part);

    }
    

    bool operator==(const Complex&
 other) const {
    
        return real_ == other.real_ &
    &
     imag_ == other.imag_;

    }
    

    bool operator!=(const Complex&
 other) const {
    
        return !(*this == other);

    }
    

private:
    double real_;
    
    double imag_;

}
    ;


int main() {
    
    Complex a(3, 4);
    
    Complex b(1, 2);
    

    Complex c = a + b;
    
    Complex d = a - b;
    
    Complex e = a * b;
    
    Complex f = a / b;
    

    std::cout <
    <
     "a + b = (" <
    <
     c.real() <
    <
     ", " <
    <
     c.imag() <
    <
     ")\n";
    
    std::cout <
    <
     "a - b = (" <
    <
     d.real() <
    <
     ", " <
    <
     d.imag() <
    <
     ")\n";
    
    std::cout <
    <
     "a * b = (" <
    <
     e.real() <
    <
     ", " <
    <
     e.imag() <
    <
     ")\n";
    
    std::cout <
    <
     "a / b = (" <
    <
     f.real() <
    <
     ", " <
    <
     f.imag() <
    <
     ")\n";
    

    return 0;

}
    

这个示例中的Complex类实现了加法、减法、乘法和除法运算符重载。同时还实现了相等和不等运算符重载。注意,这里的运算符重载函数都是const成员函数,因为它们不应该修改对象的状态。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: c++ complex类的运算符重载如何实现
本文地址: https://pptw.com/jishu/698280.html
complex类在c++中的存储方式是什么 高并发下Linux的负载均衡策略

游客 回复需填写必要信息