C++作为一种语言,大多数的人都是把它默认为面向对象的支持,认为他就是C语言的替代品,一种延伸而已,而事际上,C++与C是完全不同的语言。用过C++语言的朋友都觉得C++语言的确是个好语言。

创新互联提供高防服务器租用、云服务器、香港服务器、雅安服务器托管等
但有时由于特殊需要,不得不用C++,在C++中要想实现C#中的Thread等也是可行的,不过代码要稍复杂:
- //delegate 0
 - #define DEFINE_DELEGATE(NAME, R)\
 - class NAME##Delegate\
 - {\
 - public:\
 - virtual ~NAME##Delegate(void){ }\
 - virtual R operator()(void) = 0;\
 - };\
 - template\
 - class NAME##DelegateImpl : public NAME##Delegate\
 - {\
 - private:\
 - typedef R (C::*F)(void);\
 - C* m_class;\
 - F m_fun;\
 - public:\
 - NAME##DelegateImpl(C* c, F f){ m_class = c; m_fun = f; }\
 - virtual R operator()(void)\
 - {\
 - if(m_class)\
 - return (m_class-*m_fun)();\
 - }\
 - };\
 - template\
 - NAME##Delegate* Make##NAME##Delegate(C* c, F f)\
 - {\
 - return new NAME##DelegateImpl(c, f);\
 - }
 - //////////////////////////////////////////////////////////////////////////
 - //delegate 1
 - #define DEFINE_DELEGATE(NAME, R, P1)\
 - class NAME##Delegate\
 - {\
 - public:\
 - virtual ~NAME##Delegate(void){ }\
 - virtual R operator()(P1 p1) = 0;\
 - };\
 - template\
 - class NAME##DelegateImpl : public NAME##Delegate\
 - {\
 - private:\
 - typedef R (C::*F)(P1);\
 - C* m_class;\
 - F m_fun;\
 - public:\
 - NAME##DelegateImpl(C* c, F f){ m_class = c; m_fun = f; }\
 - virtual R operator()(P1 p1)\
 - {\
 - if(m_class)\
 - return (m_class-*m_fun)(p1);\
 - }\
 - };\
 - template\
 - NAME##Delegate* Make##NAME##Delegate(C* c, F f)\
 - {\
 - return new NAME##DelegateImpl(c, f);\
 - }
 
这个例子比较简单C++语言用来实现某个功能,client是客户程序,要想在m_sdk做处理的时候能发送通知到client,有几个方法可以实现。其一是发线程消息,其一是回调,但传统的回调对面向对象的支持并不好,这就是实现delegate的出发点。 下面是一个实现: class Delegate
- DEFINE_DELEGATE(Open, void, int, string)
 - class sdk
 - {
 - public:
 - OpenDelegate* pEvent;
 - sdk(): pEvent(NULL) { }
 - void Open()
 - {
 - cout
 - if(pEvent != NULL)
 - (*pEvent)(100, "你好");
 - }
 - };
 - class client
 - {
 - private:
 - sdk m_sdk;
 - public:
 - client()
 - {
 - m_sdk.pEvent = MakeOpenDelegate(this, OnOpen2);
 - }
 - void Open()
 - {
 - m_sdk.Open();
 - }
 - void OnOpen()
 - {
 - cout
 - }
 - void OnOpen2(int t, string str)
 - {
 - cout
 - }
 - };
 
【编辑推荐】
                分享文章:深度剖析C++语言特点
                
                网站链接:http://www.csdahua.cn/qtweb/news31/235231.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网