首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

求过来人帮忙看一下代码,没看懂,该怎么处理

2012-04-09 
求过来人帮忙看一下代码,没看懂C/C++ code#include afxwin.hclass sample:public CFrameWnd {public:sam

求过来人帮忙看一下代码,没看懂

C/C++ code
#include <afxwin.h>class sample:public CFrameWnd {public:         sample() {          MessageBox("my mfc window","CFrame constructor",MB_OK);        }        void OnLButtonDown(UINT,CPoint p) {           ::MessageBox(NULL,"DDD","DD",MB_OK);        }};



我想请教一下,为什么sample()函数内的MessageBox前没有::
而OnLButtonDown内的MessageBox需要呢?看不太懂
新手求指教了:)



[解决办法]
::是作用域运算符。也就是::号的表示调用的不是sample该类的成员函数。前面没有加::号的函数,如果该类中有同名的成员函数,则调用类的成员函数。如果没有,则条用MDC全局函数或者API函数。加了::号,即使该类中有有同名的成员函数,也不会调用类的成员函数。
讲的很清楚了
[解决办法]
你这个应用两个位置加不加::均可
[解决办法]
::是作用域。 ::MessageBox(NULL,"DDD","DD",MB_OK)是全局函数,可以看到有4个参数。而 MessageBox("my mfc window","CFrame constructor",MB_OK)是 CFrameWnd 中的实现。
总之是作用域不用。前面有::的只调用全局函数,没有::的话,如果有同名的成员函数则调用成员函数,若没有则调用全局函数。
[解决办法]
如果不加::,编译器先在本类里面找,找不到就在全局找,此时等效于加了::

热点排行