スコープ解決演算子(::)
この前後輩に聞かれたので書いときます。
【質問】
C++のプログラムで、Win32APIの関数名の先頭にスコープ解決演算子を付けているものがあるが、あれは何?
例 ::MessageBox( NULL, "Invalid Format", "Error", MB_OK );
【回答】
答えは二つあります。
一つ目は単純に、VisualStudioを使用しているときに::とタイプすると
IntelliSenseが働いて関数名一覧が表示されるので、楽に間違えることなくタイプできるということ。
二つ目は、MFCがWin32APIと同名のメンバ関数を実装していることによるものです。MFCのクラス内で、メンバ関数を呼ぶのか、Win32APIの関数を呼ぶのかを指定するために使います。
例えば、MFCのCWndクラスは、MessageBoxというメンバ関数を持ちます。
このクラスのメンバ関数の中で単にMessageBox関数をコールすると
メンバ関数のMessageBoxがコールされてしまうのです。
このため、Win32APIのMessageBoxをコールするときには「::MessageBox」とタイプするのです。