c++:使用构造函数实现操作符

c++: implement operators using constructors

本文关键字:实现 操作符 构造函数 c++      更新时间:2023-10-16

我在c++中创建了一个类,它具有unsigned short, signed short, `const char*等的构造函数。我想重载所有这些类的操作符。最有效的方法是什么?我真的需要为每个操作符和每种类型写一个函数吗?或者可以使用一些魔法?

我想重载新类型的变量可以在其他类型的左边或右边的情况。此外,我想调整一些类型,例如,如果我添加Float, double或Float,新类型Int必须返回新类型Float。如果不为每种类型手动编写函数,这一切都可能吗?

提前感谢!

对于问题的第二部分,您可以返回调整后的类型:

template <typename T>
class Class
{
    T data;
public:
    Class (const T& data) : data(data) {}
    template <typename U>
    auto operator+(const U &x) -> typename std::common_type<T, const U&>::type
//  ^^^^                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    {
        return data + x;
    }
};
int main()
{
    Class<int> obj(10);
    double x = obj + 12.5;
}

我希望我很好地理解了你的问题