摘要:成员函数指针与高性能的c++委托(下篇) member function pointers and the fastest possible c++ delegates 撰文:don clugston 翻译:周翔 (接中篇) 委托(delegate) 和成员函数指针不同,你不难发现委托的用处。最重要的,使用委托可以很容易地实现一个subject/observer设计模式的改进版[gof, p. 2......
摘要://///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// thursday, april 08, 2004......
成员函数指针与高性能的C++委托(中篇)成员函数指针与高性能的c++委托(中篇) member function pointers and the fastest possible c++ delegates 撰文:don clugston 【程序编程相关:
怎样让你的博客引起别人的注意】 【推荐阅读:
将来你会成为博客】 (接上篇) 【扩展信息:
关于脚本中注释的五点建议】 翻译:周翔 成员函数指针——为什么那么复杂? 类的成员函数与标准的c函数有一些不同.与被显式声明的参数相似,类的成员函数有一个隐藏的参数this,它指向一个类的实例.根据不同的编译器,this或者被看作内部的一个正常的参数,或者会被特别对待(比如,在vc++中,this一般通过ecx寄存器来传递,而普通的成员函数的参数被直接压在堆栈中).this作为参数与其他普通的参数有着本质的不同,即使一个成员函数受一个普通函数的支配,在标准c++中也没有理由使这个成员函数与其他的普通函数(ordinary function)的行为相同,因为没有thiscall关键字来保证它使用像普通参数一样正常的调用规则.成员函数是一回事,普通函数是另外一回事(member functions are from mars, ordinary functions are from venus). 你可能会猜测,一个成员函数指针与一个普通函数指针一样,只是一个代码指针.然而这种猜测也许是错误的.在大多数编译器中,一个成员函数指针要比一个普通的函数指针要大许多.更奇怪的是,在visual c++中,一个成员函数指针可以是4.8.12甚至16个字节长,这取决于它所相关的类的性质,同时也取决于编译器使用了怎样的编译设置!成员函数指针比你想象中的要复杂得多,但也不总是这样. 让我们回到二十世纪80年代初期,那时,最古老的c++编译器cfront刚刚开发完成,那时c++语言只能实现单一继承,而且成员函数指针刚被引入,它们很简单:它们就像普通的函数指针,只是附加了额外的this作为它们的第一个参数,你可以将一个成员函数指针转化成一个普通的函数指针,并使你能够对这个额外添加的参数产生足够的重视. 这个田园般的世界随着cfront 2.0的问世被击得粉碎.它引入了模版与多重继承,多重继承所带来的破坏造成了成员函数指针的改变.问题在于,随着多重继承,调用之前你不知道使用哪一个父类的this指针,比如,你有4个类定义如下: class a { public: virtual int afunc() { return 2; }; }; class b { public: int bfunc() { return 3; }; }; // c是个单一继承类,它只继承于a class c: public a { public: int cfunc() { return 4; }; }; // d 类使用了多重继承 class d: public a, public b { public: int dfunc() { return 5; }; }; 假如我们建立了c类的一个成员函数指针.在这个例子中,afunc与cfunc都是c的成员函数,所以我们的成员函数指针可以指向afunc或者cfunc.但是afunc需要一个this指针指向c::a(后面我叫它athis),而cfunc需要一个this指针指向c(后面我叫它cthis).编译器的设计者们为了处理这种情况使用了一个把戏(trick):他们保证了a类在物理上保存在c类的头部(即c类的起始地址也就是一个a类的一个实例的起始地址),这意味着athis == cthis....
下一页 摘要: 总结一些管理心得、经验与想法,写出来,便于解决问题或日常检视公司运行状况的时候看看。 一、动态平衡与发展 公司创办的热情、首轮机会过去后,面对经营中不断出现的诸多问题,经营者的想法会发生很多变化,会发现可以导致公司走向衰落甚至垮掉的因素非常多而且问题不断出现。 公司的运行是很多环节的协同运行,概括起来说,就是在现有的政策法律的规范下,协调合伙人或投资人与经营者关系,运作资金,了解消......