【发布时间】:2012-01-30 13:20:39
【问题描述】:
我已经看过几次了,我一直在摸不着头脑想知道为什么......
例如:(http://www.codeguru.com/forum/showthread.php?t=377394)
void LeftClick ( )
{
INPUT Input={0};
// left down
Input.type = INPUT_MOUSE;
Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
::SendInput(1,&Input,sizeof(INPUT));
// left up
::ZeroMemory(&Input,sizeof(INPUT));
Input.type = INPUT_MOUSE;
Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
::SendInput(1,&Input,sizeof(INPUT));
}
这个例子在没有 ::(范围)操作符的情况下也能工作,那么为什么它们还在那里呢?
【问题讨论】:
-
如果
// left down被删除,它也可以工作。那么它为什么会存在呢?为了清楚起见。 -
假设 OP 是正确的,即使没有
::,它也能“工作”,那么是的,真的。但我知道还有更多内容,这就是我没有发布答案的原因。 -
常用在Windows中,MFC类往往有与全局API函数同名的成员函数。使用 :: 告诉我们您确实打算调用 API 函数。
-
是吗?我从来没有在 Windows 中进行过太多编程。在我看来,另一件事我可以忘记并搞砸一些事情:-)
-
由于我无法编辑之前对 tenfour 的评论,我的意图是通过添加无用的
::,您的代码会变得更加混乱,而不是更加清晰。
标签: c++ scope operator-keyword