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

C++11標(biāo)準(zhǔn)庫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ì)象來"適應(yīng)"原對(duì)象的參數(shù)列表。本文將帶大家詳細(xì)了解一下bind函數(shù)的應(yīng)用詳解

bind 是什么?

bind 顧名思義: 綁定

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

資料上是這么講的:可以將 bind 函數(shù)看做一個(gè)通用函數(shù)的適配器,它接受一個(gè)可調(diào)用對(duì)象,生成一個(gè)新的可以調(diào)用對(duì)象來“適應(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ù)的位置來識(shí)別的,形如 _n 之類的, n 是整形, _1 是第一個(gè)參數(shù),_2是第二個(gè)參數(shù),以此類推。

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

using std:: placeholders::_1

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

舉個(gè)栗子

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

1. bind 無參數(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)庫bind函數(shù)應(yīng)用教程的文章就介紹到這了,更多相關(guān)C++11 bind函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    C語言每日練習(xí)之乒乓球比賽問題

    這篇文章主要為大家詳細(xì)介紹了C語言實(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語言實(shí)現(xiàn)隨機(jī)發(fā)撲克牌

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

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

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

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

最新評(píng)論

昌平区| 精河县| 信阳市| 商南县| 平安县| 惠安县| 灵台县| 龙泉市| 保靖县| 台山市| 洪江市| 兴宁市| 永顺县| 来凤县| 营口市| 乌恰县| 天峻县| 祁连县| 望谟县| 湘潭县| 图们市| 永清县| 铜川市| 图木舒克市| 任丘市| 海南省| 扶余县| 神池县| 保亭| 淄博市| 汤阴县| 晋城| 大埔县| 互助| 江山市| 基隆市| 清流县| 巴东县| 永登县| 松桃| 余姚市|