使用类作为操作数的操作在C++中成为可能

Making operations with a class as an operand possible in C++

本文关键字:C++ 操作数 操作      更新时间:2023-10-16

我对运算符重载很熟悉,但我想知道我们如何实现这样的东西:

myClass myclassobj;
int x;
x = 5;
x = x + myclassobj

没有办法重载int类的+运算符,所以应该从myClass中完成一些操作,但我们该如何做到呢?我可能使用了错误的关键字,但搜索SO并没有导致任何事情。如果我做错了什么,我深表歉意,这是我在这里的第一篇帖子。

Edit-我的类是一个自定义向量类,所以简单地将其转换为给定类型是行不通的。

定义一个带有签名int operator+(int, myClass)的重载运算符。

你说得对。

没有办法重载int类的+运算符,因此应该从myClass 中执行一些操作

您的问题:

但我们该怎么做呢?

我的答案:

您应该使用用户定义的类型转换。它可以与转换运算符配合使用。

#include <iostream>
class myClass
{
    int i;
public:
    myClass(int i=0) : i(i) {  }
    operator int(){ // A conversion from myClass to int may solve your problem.
        return i;
    }
};
int main()
{
    myClass myclassobj(99);
    int x=7;
    x = 5;
    x = x + myclassobj;
    std::cout<<x<<std::endl;
    return 0;
}

Brian也给出了一个很好的答案,但只有当重载运算符不需要来自第二个参数的受保护或私有成员,或者重载运算符声明为myClass的朋友时,它才有效。