最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++11標(biāo)準(zhǔn)庫(kù)bind函數(shù)應(yīng)用教程

 更新時(shí)間:2021年12月13日 15:53:28   作者:拾荒荒的博客  
bind函數(shù)定義在頭文件functional中,可以將bind函數(shù)看做成一個(gè)通用的函數(shù)適配器,他接收一個(gè)可調(diào)用對(duì)象,生成一個(gè)新的可調(diào)用對(duì)象來(lái)"適應(yīng)"原對(duì)象的參數(shù)列表。本文將帶大家詳細(xì)了解一下bind函數(shù)的應(yīng)用詳解

bind 是什么?

bind 顧名思義: 綁定

通俗來(lái)講呢,可以這么理解有點(diǎn)像函數(shù)指針的意思。

資料上是這么講的:可以將 bind 函數(shù)看做一個(gè)通用函數(shù)的適配器,它接受一個(gè)可調(diào)用對(duì)象,生成一個(gè)新的可以調(diào)用對(duì)象來(lái)“適應(yīng)”原對(duì)象參數(shù)列表

它一般調(diào)用形式:

// 其中 newCallable 是一個(gè)可調(diào)用的對(duì)象, arg_list 是以逗號(hào)分隔的參數(shù)列表
// 這時(shí)我們調(diào)用 newCallable,newCallable 就會(huì)調(diào)用 callable, 并用 arg_list 傳遞參數(shù)
auto newCallable = bind(callable, arg_list);

好了,重點(diǎn)在于 arg_list 里,那么我們?nèi)绾蝹魅雲(yún)?shù)呢

它們是靠這些參數(shù)的位置來(lái)識(shí)別的,形如 _n 之類的, n 是整形, _1 是第一個(gè)參數(shù),_2是第二個(gè)參數(shù),以此類推。

而名字 _n 是定義在 placeholders 命名空間中, 而 placeholders 本身又定義在 std 命名空間中, 所以形如:

using std:: placeholders::_1

接下來(lái),我們舉例幾個(gè)列子

舉個(gè)栗子

bind 是在頭文件 #include <functional> 中, 首先要包含它。

1. bind 無(wú)參數(shù)的普通函數(shù)

#include <iostream>
#include <functional> // 包含此頭文件

// 普通函數(shù)
void Fun()
{
	std::cout << "I am Fun!" << std::endl;
}

// 主函數(shù)
int main()
{
	auto fun = std::bind(Fun); // 適配 Fun 函數(shù)并返回一個(gè)可調(diào)用的對(duì)象
	fun();
	return 0;
}

調(diào)試結(jié)果:

2. bind 1個(gè)參數(shù)的普通函數(shù)

#include <iostream>
#include <functional> // 包含此頭文件

// 普通函數(shù)
void Fun(int a)
{
	std::cout << "I am Fun! a = " << a <<std::endl;
}

// 主函數(shù)
int main()
{
	auto fun = std::bind(Fun, std::placeholders::_1); 
	fun(5);
	return 0;
}

調(diào)試結(jié)果:

3. bind 多個(gè)參數(shù)的普通函數(shù)

#include <iostream>
#include <functional> // 包含此頭文件

// 普通函數(shù)
int Fun(int a, int b)
{
	return a - b;
}

// 主函數(shù)
int main()
{
	auto fun = std::bind(Fun, std::placeholders::_1, std::placeholders::_2); 
	std::cout << fun(5, 2) << std::endl;
	return 0;
}

調(diào)試結(jié)果:

4. bind 多個(gè)參數(shù)的普通函數(shù)并打亂參數(shù)位置

#include <iostream>
#include <functional> // 包含此頭文件

// 普通函數(shù)
int Fun(int a, int b)
{
	return a - b;
}

// 主函數(shù)
int main()
{
	auto fun1 = std::bind(Fun, std::placeholders::_1, std::placeholders::_2);
	auto fun2 = std::bind(Fun, std::placeholders::_2, std::placeholders::_1);
	std::cout << fun1(5, 2) << std::endl;
	std::cout << fun1(5, 2) << std::endl;
	return 0;
}

調(diào)試結(jié)果:

5. bind 類的成員函數(shù)

#include <iostream>
#include <functional> // 包含此頭文件

class MyClass {
public:
	MyClass() {}
	~MyClass() {}

public:
	void printInfo() {
		std::cout << "MyClass Info." << std::endl;
	}
};

// 主函數(shù)
int main()
{
	MyClass A;
	auto fun = std::bind(&MyClass::printInfo, A);
	fun();
	return 0;
}

調(diào)試結(jié)果:

再舉個(gè)應(yīng)用栗子

#include <iostream>
#include <functional> // 包含此頭文件

typedef std::function<void(int)> CallbackType;
// A 類
class MyClassA {
public:
	void regeditCallBack(CallbackType fun)
	{ _callback_fun = fun; }

	void printInfoA(int d) 
	{ _callback_fun(d); }

private:
	CallbackType _callback_fun;
};
// B 類
class MyClassB {
public:
	void printInfoB(int d) {
		std::cout << d << std::endl;
	}
};

// 主函數(shù)
int main()
{
	MyClassB B;
	auto funB = std::bind(&MyClassB::printInfoB, B, std::placeholders::_1);

	MyClassA A;
	A.regeditCallBack(funB);
	A.printInfoA(1);

	return 0;
}

調(diào)試結(jié)果:

到此這篇關(guān)于C++11標(biāo)準(zhǔn)庫(kù)bind函數(shù)應(yīng)用教程的文章就介紹到這了,更多相關(guān)C++11 bind函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)反彈球小游戲

    C語(yǔ)言實(shí)現(xiàn)反彈球小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)反彈球小游戲,利用函數(shù)寫的C語(yǔ)言小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C語(yǔ)言制作簡(jiǎn)易金山打字通功能的代碼

    C語(yǔ)言制作簡(jiǎn)易金山打字通功能的代碼

    今天小編就為大家分享一篇關(guān)于C語(yǔ)言制作簡(jiǎn)易金山打字通功能的代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • 如何用C寫一個(gè)web服務(wù)器之基礎(chǔ)功能

    如何用C寫一個(gè)web服務(wù)器之基礎(chǔ)功能

    C語(yǔ)言是一門很基礎(chǔ)的語(yǔ)言,程序員們對(duì)它推崇備至,本文將帶著大家來(lái)看一下,如何用C寫一個(gè)web服務(wù)器。
    2021-05-05
  • C語(yǔ)言中send()函數(shù)和sendto()函數(shù)的使用方法

    C語(yǔ)言中send()函數(shù)和sendto()函數(shù)的使用方法

    這篇文章主要介紹了C語(yǔ)言中send()函數(shù)和sendto()函數(shù)的使用方法,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • C++中單鏈表操作的示例代碼

    C++中單鏈表操作的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C++中單鏈表操作的示例代碼,主要包括單鏈表的創(chuàng)建、元素的插入和刪除等。文中的代碼簡(jiǎn)潔易懂,需要的可以參考一下
    2022-10-10
  • C語(yǔ)言編程內(nèi)存分配通訊錄靜態(tài)實(shí)現(xiàn)示例代碼教程

    C語(yǔ)言編程內(nèi)存分配通訊錄靜態(tài)實(shí)現(xiàn)示例代碼教程

    這篇文章主要為大家介紹了C語(yǔ)言編程實(shí)現(xiàn)靜態(tài)的通訊錄示例代碼教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-10-10
  • C語(yǔ)言每日練習(xí)之乒乓球比賽問(wèn)題

    C語(yǔ)言每日練習(xí)之乒乓球比賽問(wèn)題

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)乒乓球比賽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++實(shí)現(xiàn)簡(jiǎn)單的通訊錄管理系統(tǒng)

    C++實(shí)現(xiàn)簡(jiǎn)單的通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單的通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語(yǔ)言實(shí)現(xiàn)隨機(jī)發(fā)撲克牌

    C語(yǔ)言實(shí)現(xiàn)隨機(jī)發(fā)撲克牌

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)隨機(jī)發(fā)撲克牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++?Primer學(xué)習(xí)記錄之變量

    C++?Primer學(xué)習(xí)記錄之變量

    這篇文章主要為大家介紹了C++Primer之變量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01

最新評(píng)論

舒城县| 牙克石市| 闻喜县| 阳信县| 绥德县| 图木舒克市| 滨州市| 罗定市| 新乐市| 鄂托克旗| 县级市| 怀宁县| 隆回县| 萨迦县| 怀柔区| 洛宁县| 富源县| 甘孜县| 龙陵县| 石棉县| 民权县| 梅州市| 广安市| 屯留县| 凌海市| 观塘区| 水富县| 麦盖提县| 蓝田县| 河东区| 固安县| 洛浦县| 武安市| 陈巴尔虎旗| 普陀区| 常宁市| 连江县| 孝义市| 虞城县| 同德县| 吉木萨尔县|