c/c++语法
夜泊枫桥
这个作者很懒,什么都没留下…
展开
-
回调函数中调用类中的非静态成员变量或非静态成员函数
回调函数中调用类中的非静态成员变量或非静态成员函数 【问题】如何在类中封装回调函数? a.回调函数只能是全局的或是静态的。 b.全局函数会破坏类的封装性,故不予采用。 c.静态函数只能访问类的静态成员,不能访问类中非静态成员。 1. 如何让静态函数访问类的非静态成员。 a.声明一静态函数a(),将类实例对象指针做为参数传入。如: class A()转载 2013-01-15 15:19:58 · 3308 阅读 · 2 评论 -
成员函数指针与高性能的C++委托
引子 标准C++中没有真正的面向对象的函数指针。这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托 (delegate)")在一些语言中已经证明了它宝贵的价值。在Delphi (Object Pascal)中,面向对象的函数指针是Borland可视化组建库(VCL,Visual Component Library)的基础。而在目前,C#使"委托"的概转载 2013-01-15 15:44:05 · 1149 阅读 · 0 评论 -
C++ 实现把非静态成员函数作为回调函数(非static)
众所周知,C++的类成员函数不能像普通函数那样用于回调,因为每个成员函数都需要有一个对象实例去调用它。 通常情况下,要实现成员函数作为回调函数,一种常用的方法就是把该成员函数设计为静态成员函数,但这样做有一个缺点,就是会破坏类的结构性,因为静态成员函数只能访问该类的静态成员变量和静态成员函数,不能访问非静态的,要解决这个问题,需要把对象实例的指针或引用做为参数传给它。转载 2013-01-15 15:49:49 · 845 阅读 · 0 评论 -
C++对象模型 多重继承与虚函数表
一 多重继承 1) 代码: Code #include iostream> using namespace std; class B1 { public: int x; virtual void v1(){ cout "B1::v1" endl; } void f1(){cout "B1::f1" endl; } };转载 2013-01-15 16:06:04 · 884 阅读 · 0 评论