c ++:使用构造函数实现运算符

时间:2013-05-24 13:45:59

标签: c++ operators

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

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

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;
}

我希望我理解你的问题