注册 登录
编程论坛 C++教室

重载操作符的问题

复旦 发布于 2018-10-30 21:39, 1378 次点击
写了一个myvector类(矢量类)。 然后定义了矢量*数的操作符。   


    myvector operator * (double n)   //重载*操作符(矢量*数)
    {
        myvector result;
        for (int i = 0; i < dim; i++)
            result.element[i] = element[i] * n;
        return result;
    }

那么怎么定义 数*矢量的操作符呢?
比如满足
myvector a(3,2,3,4),b;
double n=5;
b=n*a;
这样的。
5 回复
#2
Jonny02012018-10-30 21:58
myvector operator * (double n)   //重载*操作符(矢量*数)
    {
       myvector result = *this;
        for (int i = 0; i < dim; i++)
            result.element[i] = element[i] * n;
        return result;
    }
#3
复旦2018-10-30 23:06
那数*矢量操作符怎么写呢
#4
rjsp2018-10-31 10:04
friend Vector operator*( double value, const Vector& rhs )
#5
复旦2018-10-31 13:00
这个操作符函数不能在类里面写功能吧。
外面怎么写具体代码呢?
#6
Jonny02012018-11-01 19:01
程序代码:
#include <iostream>

using namespace std;
class int_number {
    friend ostream &operator<<(ostream &, const int_number &) noexcept;
    private:
        int num;
    public:
        int_number(int num = 0) : num {num} {}
        int_number(const int_number &) = default;
        int_number(int_number &&) noexcept = default;
        ~int_number() = default;
        int_number operator*(int rhs) const noexcept {
            auto temp {*this};
            temp.num *= rhs;
            return temp;
        }
};
int_number operator*(int lhs, const int_number &rhs) noexcept {
    return rhs * lhs;
}
ostream &operator<<(ostream &os, const int_number &rhs) noexcept {
    os << rhs.num;
    return os;
}
int main(int argc, char *argv[]) {
    int_number number = 10;
    cout << number * 10 << endl;
    cout << 8 * number << endl;
}
1