diff --git a/function_template.cpp b/function_template.cpp new file mode 100644 index 0000000..2016fd9 --- /dev/null +++ b/function_template.cpp @@ -0,0 +1,31 @@ +#include +#include + +// 用函数模板求解定积分 +class F1 +{ +public: + double fun(double x) { return x * x; } +}; +class F2 +{ +public: + double fun(double x) { return x; } +}; + +template +double integrate(T cf, double a, double b, int n = 10000) +{ + double result{(cf.fun(a) + cf.fun(b)) / 2}; + double h{(b - a) / n}; + for (int i{1}; i < n; i++) + result += cf.fun(a + i * h); + result *= h; + return result; +} + +int main() +{ + std::cout << integrate(F1{}, 0, 1) << '\n'; + std::cout << integrate(F2{}, 0, 1); +} \ No newline at end of file