c++ - 如何实现运算符重载?

标签 c++ oop overloading operator-keyword

我的程序有问题。我想创建一个二维容器,但我不知道如何实现运算符重载。这是我的代码:

    template<class T, int N, int M>//az osztály sablonjai
    class my_matrix:public matrix_base<T,N,M>{
    public:
    my_matrix();

    ~my_matrix();

    T& operator=(my_matrix &rhs);

    T& operator()(int rhs,int lhs);

    T& operator+(my_matrix<T,N,M> &rhs);

    T& operator-(my_matrix<T,N,M> rhs);

    T& operator*(my_matrix<T,N,M> rhs);

    T& operator/(my_matrix<T,N,M> rhs);

    private:
    T arr[N][M];//alap kétdimenziós tömb
    };

    my_matrix<T,N,M>::my_matrix<T,N,M>(){
    T arr[N][M];
    };

    my_matrix<T,N,M>::~my_matrix<T,N,M>(){
    delete[] arr;
    };

    T& operator=(my_matrix rhs){
    return this;
    };

    T& operator()(int rhs,int lhs){
    return arr[rhs][lhs];
    };

    T& my_matrix::operator+(my_matrix<T,N,M> rhs){
    return this+lhs;
    };

    T& my_matrix::operator-(my_matrix<T,N,M> rhs){
    return this-lhs;
    };

    T& my_matrix::operator*(my_matrix<T,N,M> rhs){
    return this*lhs;
    };

    T& my_matrix::operator/(my_matrix<T,N,M> &rhs){
    return this/lhs;
    };

我想得到这个: 我的矩阵米; 我的矩阵 m2; ... m=m+m2;

matrix_base 是一个未知的抽象类(这是一个任务)。 谁能帮我?谢谢!

最佳答案

我强烈建议您在发布之前搜索 C++ 常见问题解答和 StackOverflow。

例如,C++ FAQ 有很大一部分是关于 Matrix 类和运算符重载的。查看此链接:C++ FAQ - Matrix overloaded operators

编辑 1:添加 Effective C++

另一个建议是获取 Scott Meyer 的 Effective C++ 书籍:
Scott Meyer's Books on Amazon.com
不要忘记 Herb Sutter 的 Exceptional C++:
Herb Sutter's books on Amazon.com

Scott Meyer 的书中有关于重载运算符的部分,尤其是 +、-、+=-=

关于c++ - 如何实现运算符重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13544065/

相关文章:

java - 如何创建一个接受可变数量参数的 Java 方法?

c++ - 嵌套 vector 不遵循提升规则。解决方案有一个错误。

C++ const 函数错误

java - 静态/编译时多态性

java - 获取当前类(class)的引用

php - 依赖注入(inject)容器与注册表模式

C# 运算符重载、重写字符串?

c++ - 为任何返回 vector 的函数重载 ostream

c++ - 如何在 C 或 C++ 中检查结构是否为 NULL

c++ - 通过 memoryDC Blt'ing 不起作用