在命名空间前面加不加域运算符有没有区别?

一蚊惊人小号 2011-11-30 11:12:43
比如::Message::Command跟Message::Command是不是完全没有区别的?请知情人士回答
...全文
131 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wswhz1987 2011-11-30
  • 打赏
  • 举报
回复
::Message::Command 很少有这样做的吧。。。给你举个例子吧。
在MFC中 MessageBox就是CWnd中的一个成员函数。也就是CWnd::MessageBox。而::MessageBox就是API中的MessageBox,是全局的函数。
::Message::Command 意思是::表示全局,Message:: 表示Message命名空间。难道Local还有一个Message::,
gjw880730 2011-11-30
  • 打赏
  • 举报
回复
在定义自己的成员函数时,如果调用的API函数名与自己的函数名不同,那么该API函数名前可以加也可以不加::符号,编译器会自动识别API函数。

但是如果当前定义的成员函数与内部调用的API函数名相同,那么后者前面必须加::符号,否则程序在编译或运行时就会出错。

这种以::开始的表示方法表明该函数是一个全局函数。


上面是我找的资料上的,希望对你有用
一蚊惊人小号 2011-11-30
  • 打赏
  • 举报
回复
还有其他回答吗

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧