要重载向量类的 += 运算符,您可以在向量类中添加成员函数或友元函数来实现。以下是一个示例代码,演示了如何重载向量类的 += 运算符:

#include <iostream>
#include <cmath>

class Vector {
public:
    // 构造函数
    Vector(int dim) : size(dim), data(new double[size]) {}

    // 拷贝构造函数
    Vector(const Vector& other) : size(other.size), data(new double[size]) {
        for (int i = 0; i < size; i++) {
            data[i] = other.data[i];
        }
    }

    // 析构函数
    ~Vector() {
        delete[] data;
    }

    // 重载 [] 运算符以允许访问向量元素
    double& operator[](int index) {
        if (index >= 0 && index < size) {
            return data[index];
        } else {
            throw std::out_of_range('Index out of range');
        }
    }

    // 重载 const 版本的 [] 运算符,以允许在常量对象上访问元素
    const double& operator[](int index) const {
        if (index >= 0 && index < size) {
            return data[index];
        } else {
            throw std::out_of_range('Index out of range');
        }
    }

    // 重载 += 运算符,实现向量的累加
    Vector& operator+=(const Vector& other) {
        if (size != other.size) {
            throw std::invalid_argument('Vector sizes are not equal');
        }

        for (int i = 0; i < size; i++) {
            data[i] += other.data[i];
        }

        return *this;
    }

    // 获取向量模长
    double getMagnitude() const {
        double sum = 0.0;
        for (int i = 0; i < size; i++) {
            sum += data[i] * data[i];
        }
        return std::sqrt(sum);
    }

    // 输出向量内容
    void print() const {
        std::cout << 'Vector: ( '; 
        for (int i = 0; i < size - 1; i++) {
            std::cout << data[i] << ', '; 
        }
        std::cout << data[size - 1] << ' )' << std::endl;
    }

private:
    double* data;
    int size;
};

// 重载 + 运算符,实现向量相加
Vector operator+(const Vector& v1, const Vector& v2) {
    Vector result(v1);
    result += v2;
    return result;
}

int main() {
    // 创建两个向量对象
    Vector v1(3);
    Vector v2(3);

    // 设置向量元素的值
    v1[0] = 1;
    v1[1] = 2;
    v1[2] = 3;

    v2[0] = 4;
    v2[1] = 5;
    v2[2] = 6;

    // 输出向量内容
    v1.print();
    v2.print();

    // 进行向量加法
    Vector sum = v1 + v2;
    sum.print();

    // 进行向量累加
    v1 += v2;
    v1.print();

    return 0;
}

在这个示例中,我们重载了 += 运算符,使得可以直接通过 v1 += v2 来实现向量的累加。另外,我们还重载了 + 运算符,使得可以通过 v1 + v2 来实现向量相加,返回一个新的向量对象。您可以根据需要修改和扩展该类,以满足您的具体需求。

C++ 向量类+=运算符重载:详细指南及示例代码

原文地址: https://www.cveoy.top/t/topic/b4M2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录