创建自定义运算符c ++

时间:2014-08-26 19:05:28

标签: c++ operators

我想问一下可以在C ++ ex。中定义自定义运算符:

Func function;
double a[2] = {-3, 3};
function = function integrate a;

注意:整合是在区间< -3,3>上进行数值积分的算子。

我真的对如何创建自己的运营商感兴趣。

感谢您的回复和时间。 马里

3 个答案:

答案 0 :(得分:3)

为什么不为集成方法编写一个类(可能是完整的类层次结构)或函数也足够了。然后给它想要作为参数集成的函数(使用std::function将允许它成为函数指针,函子或lambda表达式)和集成的范围。这是我最近这样做的方式。例如在1D:

#include <functional>
#include <iostream>

double integrate(std::function<double(double)> f, double a, double b)
{
    return (b-a)/2.0*(f(a)+f(b));
}

int main()
{
    std::cout << integrate([](double x){ return x*x;}, -3.0, 3.0) << std::endl;
    return 0;
}

答案 1 :(得分:1)

您无法创建集成运算符。您可以创建一个集成的功能

#include <functional>
typedef std::function<double(double)> Function;

double integrate(Function func, double a[])
{
    double result = 0.0;
    //do numeric integration
    return result;
}
double my_func(double x)
{
    return x * x;
}
int main()
{
    double a[] = {-3.0, 3.0};
    const double result = integrate(my_func, a);
    return 0;
}

答案 2 :(得分:0)

您无法定义自定义运算符。 您只能更改现有的含义。 但优先级和分组将保留原始运算符。