标题:重载操作符的问题
只看楼主
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
结帖率:100%
已结贴  问题点数:20 回复次数:5 
重载操作符的问题
写了一个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;
这样的。
搜索更多相关主题的帖子: 重载 操作符 定义 result element 
2018-10-30 21:39
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:0 
myvector operator * (double n)   //重载*操作符(矢量*数)
    {
       myvector result = *this;
        for (int i = 0; i < dim; i++)
            result.element[i] = element[i] * n;
        return result;
    }
2018-10-30 21:58
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
得分:0 
那数*矢量操作符怎么写呢
2018-10-30 23:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:4 
friend Vector operator*( double value, const Vector& rhs )
2018-10-31 10:04
复旦
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:81
专家分:124
注 册:2018-10-29
得分:0 
这个操作符函数不能在类里面写功能吧。
外面怎么写具体代码呢?
2018-10-31 13:00
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:16 
程序代码:
#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;
}
2018-11-01 19:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490838-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.301353 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved