包装器

T run(T t, F f)//函数包装器,T是数据,F是函数

 1 #include <iostream>
 2
 3 template<typename T, typename F>
 4 T run(T t, F f)//函数包装器,T是数据,F是函数
 5 {
 6     return f(t);
 7 }
 8
 9 int add(int num)//函数
10 {
11     return num + 10;//实现+10
12 }
13
14 void main()
15 {
16     int num = 100;
17     auto func = add;
18
19     std::cout << run(num, add) << std::endl;//110
20
21     system("pause");
22 }

//包装器,实现一个操作接口,操作多个类的函数

 1 #include <iostream>
 2
 3 //包装器,实现一个操作接口,操作多个类的函数
 4
 5 template<typename T, typename F>
 6 T run(T t, F f)//函数包装器,T是数据,F是函数
 7 {
 8     return f(t);
 9 }
10
11 int add(int num)//函数
12 {
13     return num + 10;//实现+10
14 }
15
16 class myclass
17 {
18 public:
19     int num;
20     myclass(int data) :num(data)
21     {
22
23     }
24     int operator()(int X)//重载()
25     {
26         return X*num;
27     }
28 };
29
30 void main()
31 {
32     std::cout << run(101, myclass(5)) << std::endl;//505
33
34     system("pause");
35 }
时间: 2024-10-08 09:47:51

包装器的相关文章

java基本类型和包装器类

java是一种面向对象语言,java中的类把方法与数据连接在一起,并构成了自包含式的处理单元.但在java中不能定义基本类型(primitive type),为了能将基本类型视为对象来处理,并能连接相关的方法,java为每个基本类型都提供了包装类,这样,我们便可以把这些基本类型转化为对象来处理了.这些包装类有:Boolean,Byte,Short,Character,Integer,Long,Float,Double,Void共9个(注意:Date不是,无其基本类型). 一. 包装类(Wrapp

对象包装器与自动装箱

前言 前面提到过,除了int,float这些基本数据类型,其他所有数据类型在Java中都是类. 那么,如果我希望这些基本类型也是类类型呢? 那么就使用对象包装器吧. 包装器的作用 1. 它能够提供很多类型转型方面的方法. 2. 泛型数据的成员只能是对象. 自动装箱 就是当你使用某个基础类型,但实际类型要求是它的包装器的时候,编译器不会报错,会帮你自动完成转型. 如: ArrayList <Integer> array = new ArrayList <> (): array.add

函数包装器

在看express的源码中,经常看到函数包装的写法,有点难理解,函数包装器的作为是对一个函数进行包装,返回另外一个函数. 在包装的过程中,对旧函数和传递的参数进行改造加工.一般模式是: // oldF 旧函数, newF 新函数,callback回调函数 options 参数 newF = function(oldF,callback, options) { return function(){ // 在调用newF是,获取newF的参数 var args = Array.prototype.s

(九)对象包装器与自动装箱

有时候需要将基本数据类型转换为对象,如int -> Integer.Integer这样的类称为对象包装器类,该类一旦构造对象,便是不可变的. 装箱 list.add(3) 自动变为 list.add(Integer.valueOf(3)) 拆箱 int n = list.get(i) 自动变为 int n = list.get(i).intValue() 注意:Integer对象是不可变的,包含在包装器的内容不会改变.不能使用包装器类创建修改数值参数的方法.比如: Integer n = Int

包装器的使用

对于不存在Gradle环境的开发者来说,要使用包装器 添加这样一个task //包装器 task wrapper(type:Wrapper){ gradleVersion='2.13' } 然后执行  gradle -q wrapper 会生成一个用于Unix和Windows的脚本,然后这个脚本名就可以当做gradle命令一样进行使用. 首次运行的时候,会从网上下载指定版本的gradle,以后就会用这个gradle作为运行时环境进行执行 如果不能上网怎么办? //包装器 task wrapper

C++函数包装器

函数包装器把函数包装起来:有以下特点 1.设计通用的函数执行接口,可以设置计数(函数执行次数)和关卡 2.函数包装器依赖于函数模板,实现通用泛型 3.函数代码可以内嵌在函数中 4.原理是函数指针实现的 以下给出C++简单的函数包装器案例 #include<iostream> #include<functional> using std::cout; using std::endl; using std::cin; using std::function; //定义好了一个函数包装器

《Head First Servlets & JSP》-13-过滤器和包装器

过滤器是什么 与servlet非常类似,过滤器就是java组件,请求发送到servlet之前,可以用过滤器截获和处理清求,另外 servlet结束工作之后,在响应发回给客户之前,可以用过滤器处理响应. 容器根据DD中的声明来确定何时调用过滤器.在DD中,部署人员要建映射.明确对于哪个请求URL模式要调用哪些过滤器.所以,要由部署人员(而不是程序员)来确定哪些请求或响应应当由哪些过滤器处理. 过滤器要做的事情 只有一个过滤器接口:Filter,根据使用方式,可完成诸如以下工作: 请求过滤器可以完成

Java技术_Java千百问(0044)_什么是基本类型包装器

点击进入_更多_Java千百问 1.什么是包装器 包装器也叫包装类,继承于Object,可以当作8种基本数据类型的类映射,包装器可以直接转换为基本数据类型(成为拆箱).如下: 了解8种基本数据类型看这里:java有哪8种基本数据类型 2.包装器有什么作用 包装器描述了基本数据类型的若干属性,包括基本类型的取值范围以及长度等. 例子: public class PrimitiveTypeTest { public static void main(String[] args) { // byte

【C/C++学院】0816-引用包装器/仿函数/转义字符 R”()”/using别名/模板元编程 比递归优化/智能指针/多线程/静态断言以及调试技能的要求 assert

引用包装器  std::ref(变量) #include<iostream> template<class T> void com(T arg)//模板函数,引用无效,引用包装器 { std::cout <<"com ="<< &arg << "\n"; arg++; } void main() { int count = 10; int & rcount = count; com(coun

一个javascript类包装器

首先在js中如此创建一个类: var MyClass = function () { /* ... */ }; MyClass.prototype.method = function() { /* ... */ }; 要创建一个继承Base的子类: var temp = function () {}; temp.prototype = Base.prototype; var MyClass = function () { /* ... */ }; MyClass.prototype = new