typedef void (AFX_MSG_CALL CCmdTarget::*AFX_PMSG)(void);这个类型别名的定义该如何解释,我的理解:
首先,这是定义了一个函数指针,返回类型是void,参数void
其次,CCmdTarget:: 指明这个函数指针定义的作用域是在CCmdTarget类内,即只在该类内部有效.不理解的是:AFX_MSG_CALL是什么意思?调用约定么?但查了一下调用约定里没有这个符号的说明,而AFX_MSG_CALL在头文件中只是一个简单的宏定义(没有值).帮忙解释一下AFX_MSG_CALL,另外我其他的理解是否有误?谢谢.
首先,这是定义了一个函数指针,返回类型是void,参数void
其次,CCmdTarget:: 指明这个函数指针定义的作用域是在CCmdTarget类内,即只在该类内部有效.不理解的是:AFX_MSG_CALL是什么意思?调用约定么?但查了一下调用约定里没有这个符号的说明,而AFX_MSG_CALL在头文件中只是一个简单的宏定义(没有值).帮忙解释一下AFX_MSG_CALL,另外我其他的理解是否有误?谢谢.
#define AFX_MSG_CALL
#endif
typedef void (AFX_MSG_CALL CCmdTarget::*AFX_PMSG)(void);
1.pfunc只能用类CCmdTarget中的函数名来赋值
2.使用pfunc的时候:
如果实在类的外部则必须用对象名进行指定,就好比使用类方法一样:
obj.(*pfunc)();
pObj->(*pfunc)();
如果在类内部:
(*pfunc)();
this->(*pfun)();理解是否正确?
1.定义的函数指针变量只能用该类的类方法赋值
2.只能在类内部使用
3.唯一的使用形式(this->*pfunc)();同时,类名限定不会影响该类型的作用域,即:
1.类外部定义,为全局作用域(类外部或者内部,可直接定义变量,好比一般的自定义全局类型如struct)
2.类内部定义,作用域为类内部(外部仍可通过作用域解析符使用)