求过来人帮忙看一下代码,没看懂
- 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 中的实现。
总之是作用域不用。前面有::的只调用全局函数,没有::的话,如果有同名的成员函数则调用成员函数,若没有则调用全局函数。
[解决办法]
如果不加::,编译器先在本类里面找,找不到就在全局找,此时等效于加了::