青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開發(fā)(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 659814
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫
asio 成為C++首選網(wǎng)絡(luò)庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內(nèi)容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11060)
2.?SVN中邪惡的replace(10984)
3.?VS2005編譯libevent(10430)
4.?混音算法的學(xué)習(xí)與研究(10237)
5.?C調(diào)用lua腳本的效率測試(9020)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關(guān)于Socket編程的比較(16)
用bind來解耦
轉(zhuǎn)自:
用bind來解耦
應(yīng)用了boost::bind, boost::function, boost::test
代碼稍有修改。
#define BOOST_AUTO_TEST_MAIN
#include <boost/test/auto_unit_test.hpp>
#include <boost/test/included/unit_test_framework.hpp>
#include <boost/thread/thread.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <string>
using namespace std;
//聲明一個函數(shù)指針的類型
typedef void (* ON_SEGMENT) (char *);
//用function<> 和指針回調(diào)指針來解除耦合
//注意解耦效果: CReader 和 CSaver 沒有任何關(guān)系
class CReader
{
public:
CReader()
{
m_pFunc=NULL;
m_functor=NULL;
};
void UseFreeFunc(ON_SEGMENT pFunc)
{
m_pFunc=pFunc;
};
void UseFunctor(boost::function<void(char *)> functor)
{
m_functor= functor;
};
void Read(char * pchar)
{
if(m_pFunc)
{
m_pFunc(pchar);
};
if(m_functor)
{
m_functor(pchar);
};
}
private:
ON_SEGMENT m_pFunc;//函數(shù)指針
boost::function<void(char *)> m_functor; //函數(shù)對象
};
class CSaver
{
public:
//接受輸入的字符,保存在內(nèi)部變量m_str
void Input(char * pchar)
{
m_str.append(pchar);
};
string m_str;
};
BOOST_AUTO_TEST_CASE(test_bind)
{
//兩個類并不知道對方的任何細節(jié)
CSaver saver;
CReader reader;
//預(yù)先 把函數(shù) CSaver::Input 和要操作的數(shù)據(jù) &saver 注冊到 reader
//只要函數(shù)形式符合(返回值是void,傳入?yún)?shù)是char *),都可以注冊
//解除CSaver 和 CReader的耦合
//bind產(chǎn)生的函數(shù)對象,重載操作符()
//函數(shù)對象的本質(zhì)是 函數(shù)指針加this指針,即 操作和數(shù)據(jù)
//函數(shù)對象 比 函數(shù)指針優(yōu)越的地方是可以帶有內(nèi)部狀態(tài)
reader.UseFunctor( boost::bind(&CSaver::Input, &saver, _1) );
//延時調(diào)用,解除CSaver 和 CReader的耦合
//把字符從reader 放入 saver里面
reader.Read("Hello");
reader.Read("Mafeitao");
BOOST_CHECK(saver.m_str=="HelloMafeitao");
}
//asio 里面的 async_accept 的簡化版本
//可以接受 函數(shù)指針; 比如 async_accept(FreeFunc,Para)
//可以接受 函數(shù)對象; 比如
// CSaverFunctor func;
//async_accept(func,Para)
//可以接受 bind
template <typename AcceptHandler,typename Para>
void async_accept(AcceptHandler handler, Para p)
{
handler(p);
};
// 自由函數(shù),沒有內(nèi)部狀態(tài)
void FreeFunc(char * pChar)
{
printf("In FreeFunc %s\n", pChar);
}
BOOST_AUTO_TEST_CASE(bind_asio)
{
//類 CSaver 和 模板函數(shù) async_accept,沒有任何關(guān)系
CSaver saver;
char *pchar="Hello";
//bind生成一個臨時的functor類 CSaverTemp
//類似于
/*
class CSaverTemp
{
public:
void operator ()(char * pchar)
{
m_str.append(pchar);
};
string m_str
}
CSaverTemp saver;
async_accept(saver,pchar);
}
*/
//全局函數(shù) async_accept,接受一個bind產(chǎn)生的函數(shù)對象( 函數(shù)指針和this指針)
async_accept( boost::bind(&CSaver::Input, &saver,_1) , pchar);
BOOST_CHECK(saver.m_str=="Hello");
pchar="Mafeitao";
async_accept( boost::bind(&CSaver::Input, &saver,_1) , pchar);
BOOST_CHECK(saver.m_str=="HelloMafeitao");
//接受 全局函數(shù)指針,和下面的效果一樣
async_accept( boost::bind(FreeFunc,_1), pchar);
//接受 全局函數(shù)指針,和上面的效果一樣
async_accept( FreeFunc, pchar);
}
//帶有模板函數(shù)的類
class TReader
{
public:
//模板函數(shù)
template <typename OnReadHandler,typename Para>
void Read(OnReadHandler & handler, Para p)
{
//可以接受 函數(shù)指針,參數(shù)
//可以接受 函數(shù)對象,參數(shù)
//可以接受 bind
handler(p);
};
};
BOOST_AUTO_TEST_CASE(bind_template)
{
TReader reader;
CSaver saver;
char *pchar="Hello";
boost::function<void (char*)> handler
= boost::bind(&CSaver::Input, &saver,_1);
reader.Read(handler, pchar);
BOOST_CHECK(saver.m_str=="Hello");
pchar="Mafeitao";
reader.Read(handler, pchar);
BOOST_CHECK(saver.m_str=="HelloMafeitao");
}
//函數(shù)對象,重載操作符()
//函數(shù)對象的本質(zhì)是 函數(shù)指針加this指針,即 操作和數(shù)據(jù)
//函數(shù)對象 比 函數(shù)指針優(yōu)越的地方是可以帶有內(nèi)部狀態(tài)
class CSaverFunctor
{
public:
void operator ()(char * pchar)
{
m_str.append(pchar);
};
string m_str;
};
BOOST_AUTO_TEST_CASE(test_functor)
{
//帶有模板函數(shù)的類
TReader reader;
//函數(shù)對象
CSaverFunctor saver;
//把字符從reader 放入 saver里面
char *pchar="Hello";
reader.Read( saver , pchar);
pchar="Mafeitao";
reader.Read( saver , pchar);
BOOST_CHECK(saver.m_str=="HelloMafeitao");
}
posted on 2008-09-12 16:52
金慶
閱讀(938)
評論(0)
編輯
收藏
引用
所屬分類:
1. C/C++
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
How are dtLinks created in NavMesh
C++ parameter passing rules
Naming Conventions for Accessors
Visual Studio 2019 Compiler Hangs
Fbx File Format Identifier
查找內(nèi)存錯誤
std::thread 中的異常會丟失調(diào)用棧
用賦值代替 protobuf CopyFrom()
vs2017 linux 編譯輸出改成 vs 格式
為 LiteIDE 添加選中標記
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
国产精品v片在线观看不卡
|
99这里只有久久精品视频
|
亚洲精品国产精品国自产观看浪潮
|
亚洲欧洲日本在线
|
亚洲午夜精品国产
|
美女国产一区
|
亚洲男人天堂2024
|
欧美日本一区二区三区
|
女女同性精品视频
|
国产伦精品一区二区三区在线观看
|
在线观看日韩av电影
|
亚洲欧美激情精品一区二区
|
91久久精品久久国产性色也91
|
久久aⅴ国产欧美74aaa
|
欧美视频中文一区二区三区在线观看
|
欧美一区二区三区免费观看
|
欧美亚韩一区
|
久久久夜精品
|
久久岛国电影
|
狠狠噜噜久久
|
久久久久久久91
|
欧美亚洲日本网站
|
亚洲青涩在线
|
亚洲永久在线观看
|
欧美性做爰猛烈叫床潮
|
久久久蜜桃一区二区人
|
欧美久久成人
|
久久婷婷人人澡人人喊人人爽
|
欧美一区二区观看视频
|
亚洲精品在线电影
|
亚洲东热激情
|
欧美成人a∨高清免费观看
|
亚洲福利专区
|
亚洲国产精彩中文乱码av在线播放
|
香蕉久久夜色精品国产使用方法
|
国产精品久久一级
|
久久久久成人精品免费播放动漫
|
欧美激情综合色
|
亚洲五月六月
|
欧美波霸影院
|
久久综合中文
|
欧美激情aaaa
|
亚洲一区区二区
|
欧美一区中文字幕
|
亚洲午夜未删减在线观看
|
亚洲一区二区免费看
|
亚洲激情在线观看视频免费
|
国产又爽又黄的激情精品视频
|
香蕉成人久久
|
久久都是精品
|
欧美影院成人
|
欧美.www
|
久久久伊人欧美
|
国产精品视频精品视频
|
久久青草福利网站
|
国产亚洲欧美色
|
亚洲激精日韩激精欧美精品
|
国内揄拍国内精品久久
|
先锋资源久久
|
久久九九99
|
国产伪娘ts一区
|
亚洲黄色大片
|
亚洲经典三级
|
亚洲欧美韩国
|
欧美与欧洲交xxxx免费观看
|
国产精品自在在线
|
午夜精品久久久久久
|
亚洲另类黄色
|
欧美日韩精品在线观看
|
久久综合色一综合色88
|
黄色一区三区
|
亚洲一区二区少妇
|
亚洲欧美制服中文字幕
|
欧美激情一区二区三区在线视频观看
|
国产精品视频
|
先锋影院在线亚洲
|
久久夜色精品国产亚洲aⅴ
|
国内久久婷婷综合
|
久久只精品国产
|
欧美在线视频观看
|
欧美日韩免费观看一区
|
欧美成人日韩
|
国产日韩欧美高清免费
|
久久精品视频在线播放
|
午夜影院日韩
|
伊人春色精品
|
欧美激情视频网站
|
亚洲女人天堂成人av在线
|
欧美在线视频观看免费网站
|
在线欧美电影
|
久久经典综合
|
亚洲电影在线看
|
亚洲一区二区三区午夜
|
国内精品久久久久久久果冻传媒
|
麻豆精品91
|
欧美黑人多人双交
|
影音先锋日韩有码
|
欧美日韩午夜激情
|
欧美在线一级视频
|
亚洲免费观看
|
亚洲一区国产一区
|
一区二区在线不卡
|
欧美色欧美亚洲高清在线视频
|
欧美在线播放一区
|
日韩亚洲一区在线播放
|
麻豆久久精品
|
亚洲欧美日韩专区
|
亚洲精品乱码久久久久久按摩观
|
久久精品成人
|
一区二区久久久久
|
久久影音先锋
|
99综合视频
|
欧美成人嫩草网站
|
亚洲欧美一区二区三区久久
|
亚洲日本在线观看
|
国模私拍视频一区
|
国产精品高清一区二区三区
|
日韩午夜在线
|
欧美肥婆在线
|
久久久噜噜噜久久人人看
|
亚洲午夜一区二区三区
|
亚洲精品午夜精品
|
亚洲国产高潮在线观看
|
国内精品国产成人
|
国产欧美一区二区三区久久
|
欧美日本一道本在线视频
|
久久久久久久欧美精品
|
亚洲第一精品夜夜躁人人爽
|
亚洲人成网站精品片在线观看
|
欧美国产在线视频
|
久久婷婷人人澡人人喊人人爽
|
欧美亚洲一区二区三区
|
亚洲视频电影在线
|
国产视频亚洲精品
|
国产精品香蕉在线观看
|
国产精品大片wwwwww
|
欧美视频不卡中文
|
欧美日韩亚洲一区二区三区在线
|
欧美在线网址
|
久久久久久有精品国产
|
久久精品视频播放
|
久久久欧美精品
|
久久一区中文字幕
|
免费成人激情视频
|
嫩模写真一区二区三区三州
|
免费试看一区
|
欧美国产欧美亚洲国产日韩mv天天看完整
|
久久亚洲国产成人
|
欧美激情欧美激情在线五月
|
欧美金8天国
|
欧美午夜激情在线
|
国产欧美日韩精品专区
|
国产亚洲电影
|
亚洲国产精品专区久久
|
亚洲久色影视
|
亚洲永久免费观看
|
久久久精品欧美丰满
|
免费黄网站欧美
|
亚洲精品国产日韩
|
亚洲一区二区少妇
|
久久国产一二区
|
欧美成人高清
|
国产精品视频xxxx
|
一区二区三区在线免费观看
|
亚洲精品视频在线观看网站
|
亚洲天堂久久
|
巨乳诱惑日韩免费av
|
亚洲人成高清
|
欧美亚洲一级
|
欧美高清视频一区二区三区在线观看
|
欧美欧美在线
|
狠狠色丁香久久综合频道
|
亚洲精品视频在线播放
|
久久aⅴ国产欧美74aaa
|
欧美mv日韩mv国产网站app
|
久久久久欧美
|
亚洲精品欧美极品
|
91久久精品美女
|
亚洲欧美国产高清
|
欧美mv日韩mv国产网站app
|
国产精品嫩草久久久久
|
亚洲激情综合
|
亚洲福利国产精品
|
国产日韩亚洲欧美
|
在线一区视频
|
一本色道久久88综合亚洲精品ⅰ
|
午夜亚洲一区
|
亚洲日本一区二区
|
久久精品国产999大香线蕉
|
欧美日韩福利在线观看
|
一区福利视频
|
性视频1819p久久
|
亚洲日韩第九十九页
|
久久久www成人免费无遮挡大片
|
欧美午夜电影网
|
91久久在线视频
|
理论片一区二区在线
|
亚洲欧美中文另类
|
国产精品国产a级
|
99视频日韩
|