这是张江,我工作的地方。
路上的积雪其实不是很厚,但是走在上面滑溜溜的感觉真是久违了!路上看到有些女孩子很开心的滑着走路,看来年轻人的心情都差不多啊,呵呵。
走向张江软件园...路上的积雪已经被无数张江男,张江女踩化了。
以前短短的5分钟路,今天却格外的长。
本文总结了C++中函数指针的使用方法和使用场合
int (*fp)(int); // a pointer to function that takes an int and return an int
int foo(int);
fp = foo;
fp = &foo;
fp = 0;
int k = (*fp)(100);
k = fp(100);
LONG NewWindowProc(HWND,UINT,WPARAM,LPARAM); //申明了一个用来回调的函数。
SetWindowLongPtr(hWnd,DWLP_DLGPROC,NewWindowProc); // 设置了回调函数
// 当有信息过来的时候,windows 会调用NewWindowProc。
LONG NewWindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
// message processing logic.
}
extern bool PayByCash(double);
bool PayByCreditCard(double){...}
bool (*Pay)(double);
if( CustomerWantByCash )
Pay = PayByCash(amount); // amount is a double
else
Pay = PayByCreditCard(amount);
....// do some prepaid check and preparation
bool success = Pay();
还有一种常用的方式是把函数指针传递给另外一个函数,使得那个函数可以在它自己的函数体内调用我们传入的函数指针。比如设计一个sort函数,它接受三个参数,前面两个参数是两个相同类型的对象实例,最后一个参数需要一个函数来告诉它如何比较。我们这里不讨论具体实现,仅看看其声明方式:
bool PayByCash(double);
bool PayByCash();
bool (*Pay)(double);
Pay = PayByCash;
Pay(1000.0); // 调用的是第一个PayByCash; 因为类型一致
Pay(); // error!
void sort( T, T, fp);
int compare( T , T )();
int (*fpc)(T,T)();
int (*)(T,T)
void sort( T, T , int (*)(T,T) ) ;
typedef int (*CH)(T,T);
void sort( T,T, CH );
void (*fp)();
(void (*)())
(void (*)())0 ---- (1)
(*(void (*)())0)();
typedef void (*fp)()
(*(fp)0)();
今天,问了一个同事关于overloading和overriding的区别,但是这位已工作多年的程序员竟然支支吾吾说不清出其中的差别。这点我很吃惊。后来又问了几个人,发现竟然不止一个人没有搞清其中的差别。>
void foo(int& i);
int foo(int& i);
T t1,t2;
t1 = t1+t2; // overloading operator +
t1 = t1.Add(t2); // member function.
class Base{
public:
//....
virtual void foo(int);
void foo(double);
//....
}
class Derived{
public:
//...
void foo(int);
void foo(double);
//...
}
是的,听起来很简单,但是我们很快会发现一些问题。比如数据从哪里来、有哪些种类的数据等等。然后继续获取需求。然后我们扩充了这个需求(通过上一篇文章中的方法)。
牛逼公司的生产部经理牛魔王每天早上需要看报表。报表的内容是前一天公司生产车间所有设备的生产计划、实际生产结果、运行情况、维修明细、产量、故障情况、员工生产率和库存情况。
牛逼公司的生产部经理牛魔王每天早上需要看报表。报表的内容是前一天公司生产车间所有设备的生产计划、实际生产结果、运行情况、维修明细、产量、故障情况、员工生产率和库存情况。他要求每一种分类单独一张报表,然后把他们合起来打印成一张大报表(B3),使他能看得方便,快速。
数据来源于各个设备。设备每过一段时间会自动产生这段时间内的运行状况的数据。如果出现紧急问题,设备会直接发送事件。如果断线,设备在连接恢复之后自动上传断线期间的数据。
车间主任负责制定生产计划,核查实际生产结果,核对库存情况。他需要将这些数据记录下来,以备核查。