C++11 function函数用法

// C++11 function
#include <functional>
void print_num(int i)
{
	std::cout << i << ‘\n‘;
}
void testFunctionTpl()
{
	// templet 匿名函数
	std::function<void(const int&, const int&)>getSum = [&](const int &nI1, const int &nI2)
	{
		int nSum = nI1 + nI2;
		std::cout << nSum << endl;
	};
	 getSum(8, 9);

	 //  lambda
	 std::function<void()> f_display_42 = []() { print_num(42); };
	 f_display_42();

	 //********************* 测试成员函数 begin*********************//
	 class TestClass
	 {
	 public:
		 TestClass(int i) : m_nI(i){}
		 ~TestClass() {}
		 void testMemberFunc(int i) const { std::cout << m_nI + i << endl; }
		 int  testResultFun(int i) const { return m_nI + i; }
		 void testBindFun(int num) const { std::cout << m_nI + num << endl; }
		 int m_nI;
	 };

	 std::function<void(const TestClass&, int)> testMemberFunc = &TestClass::testMemberFunc;
	 const TestClass oTestObject(100);
	 // 传对象
	 testMemberFunc(oTestObject, 100);
	 // 会根据模板构造对象
	 testMemberFunc(300, 100);
	 //  返回值成员函数
	 std::function<int(const TestClass&, int)> testResultFun = &TestClass::testResultFun;
	 int nRet = testResultFun(oTestObject, 100);
	 std::cout << nRet << endl;
	 // 成员变量
	 std::function<int(const TestClass&)> f_num = &TestClass::m_nI;
	 std::cout << "m_nI: " << f_num(oTestObject) << ‘\n‘;

	 // 对象形式调用成员函数
	 using std::placeholders::_1;
	 std::function<void(int)> testBindFun = std::bind(&TestClass::testBindFun, oTestObject, _1);
	 testBindFun(222);

	 // 指针形式调用成员函数
	 std::function<void(int)> testBindFun2 = std::bind(&TestClass::testBindFun, &oTestObject, _1);
	 testBindFun2(333);
	 //********************* 测试成员函数 end*********************//

	 //********************* 测试普通函数 begin*********************//

	 // 绑定普通函数
	 std::function<void()> f_display_31337 = std::bind(print_num, 31337);
	 f_display_31337();
	 //********************* 测试普通函数 end*********************//

	 // bad_function_call
	 std::function<int()> f = nullptr;
	 try {
		 f();
	 }
	 catch (const std::bad_function_call& e) {
		 std::cout << e.what() << ‘\n‘;
	 }

}
int main()
{
	testFunctionTpl();
	int i = 0;
}

原文地址:https://www.cnblogs.com/xzlq/p/9505049.html

时间: 2024-10-10 21:02:57

C++11 function函数用法的相关文章

c++11:function的用法

function是函数.函数对象.函数指针.和成员函数的包装器,可以容纳任何类型的函数对象,函数指针,引用函数,成员函数的指针 普通函数 #include <functional> void print_num(int i) { cout << "i" << endl; } function<void(int)> f_display = print_num; f_display(-9); function<void()> f_

Template function 函数模板用法

#include<iostream> using namespace std; const double PI = 3.1415926; template <class T> T min(T a[], int n){ int i; T minv = a[0]; for (i = 1; i < n; i++){ if (a[i] < minv) minv = a[i]; } return minv; } template<class T1> double Ci

函数用法进阶

目录 函数用法进阶 一.函数作为参数和变量来使用 二.闭包 三.迭代器 函数用法进阶 一.函数作为参数和变量来使用 函数名表示的是函数存储在内存中的地址,函数加上括号才是函数.例如:main()表示的是函数, main是该函数的函数名,print(main)得到的是main()的内存地址,原理等同于直接赋值,可以把函数名赋值给一个变量使用,可以把函数名作为参数来使用,也可以函数名作为返回值来进行传递,等到调用的时候在加上括号,直接就可以调用函数了. def f1(): print('麻花腾')

Python成长之路第二篇(1)_数据类型内置函数用法

数据类型内置函数用法int 关于内置方法是非常的多这里呢做了一下总结 (1)__abs__(...)返回x的绝对值 #返回x的绝对值!!!都是双下划线 x.__abs__() <==> abs(x) 例如: #!/usr/bin/python print "abs(-45) : ", abs(-45) print "abs(100.12) : ", abs(100.12) print "abs(119L) : ", abs(119L)

Python成长之路第二篇(2)_列表元组内置函数用法

列表元组内置函数用法list 元组的用法和列表相似就不一一介绍了 1)def append(self, p_object):将值添加到列表的最后 # real signature unknown; restored from __doc__ """ L.append(object) -- append object to end """ pass (2)def count(self, value): 值的出现次数 # real signature

Python成长之路第二篇(3)_字典的置函数用法

字典的置函数用法(字典dict字典中的key不可以重复) class dict(object): """ dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d =

python之函数用法setdefault()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法setdefault() #D.get(k,d) #说明:k在D中,则返回 D[K],如果k不在D中,则返回d值 #D.get(k,d), also set D[k]=d if k not in D ''' >>> help(dict.setdefault) Help on built-in function setdefault: setdefault(...) D.set

python之函数用法globals()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法globals() #globals() #说明:在当前作用域下,查看全局变量 ''' globals(...) globals() -> dictionary Return the dictionary containing the current scope's global variables. ''' #案例 b='xiaodeng' print globals#<buil

Linux下Kill函数用法

http://www.cnblogs.com/winnxm/archive/2010/01/22/1654502.html [ KILL ]功能描述: 用于向任何进程组或进程发送信号. 1 #include <sys/types.h> 2 3 #include <signal.h> 4 5 int kill(pid_t pid, int sig); 6 7 参数: pid:可能选择有以下四种 1. pid大于零时,pid是信号欲送往的进程的标识. 2. pid等于零时,信号将送往所