c++使用functional装饰函数模板,不用创建多个实例对象

#include<iostream>
#include<functional>

template<typename T>
T use_f(T v, std::function<T(T)> f)
{
	static int count = 0;
	count += 1;
	std::cout << " use_f count = " << count
		<< ", &count="<< &count << std::endl;
	return f(v);
}

double dub(double x) { return 2.0 * x; }


class Fq
{
private:
	double z_;
public:
	Fq(double z = 1.0) :z_(z) {}
	double operator()(double q) { return z_ + q; }
};

int main()
{
	double y = 1.21;
	std::cout << " " << use_f<double>(y, dub);
	std::cout << " " << use_f<double>(y, Fq(10.0));

	return 0;
}

在这里插入图片描述
可以看到地址是一样的,不同的函数没有另外创建对象

相关推荐

  1. C++的函数包装模板std::function

    2024-06-18 16:48:04       35 阅读
  2. C#线程与函数对象实例

    2024-06-18 16:48:04       6 阅读
  3. C++函数对象使用

    2024-06-18 16:48:04       12 阅读
  4. [C++]态是如何调用不同函数对象的?

    2024-06-18 16:48:04       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 16:48:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 16:48:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 16:48:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 16:48:04       20 阅读

热门阅读

  1. 【二维码】

    2024-06-18 16:48:04       6 阅读
  2. Docker的安装 - 简单易懂

    2024-06-18 16:48:04       4 阅读
  3. 常见端口大全

    2024-06-18 16:48:04       5 阅读
  4. 证明 几何分布 的期望和方差

    2024-06-18 16:48:04       6 阅读
  5. 椋鸟C++笔记#5:C++内存管理

    2024-06-18 16:48:04       6 阅读
  6. 【网络协议栈】IGMP

    2024-06-18 16:48:04       5 阅读
  7. Jenkins简要说明

    2024-06-18 16:48:04       4 阅读
  8. 【Mysql】 MySQL索引的使用

    2024-06-18 16:48:04       5 阅读
  9. 安装docker+mysql的一些坑

    2024-06-18 16:48:04       5 阅读
  10. C++的标准容器及其应用

    2024-06-18 16:48:04       5 阅读
  11. WDF驱动开发-工作项

    2024-06-18 16:48:04       8 阅读