C++ Scope Resolution Operator ::

来源:互联网 发布:js new date 格式化 编辑:程序博客网 时间:2024/06/06 12:56

Ref: http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=%2Fcom.ibm.vacpp7a.doc%2Flanguage%2Fref%2Fclrc05cplr175.htm

C++ Scope Resolution Operator ::


The :: (scope resolution) operator is used to qualify hidden names so that you can still use them. You can use the unary scope operator if a namespace scope or global scope name is hidden by an explicit declaration of the same name in a block or class. For example:

int count = 0;int main(void) {  int count = 0;  ::count = 1;  // set global count to 1  count = 2;    // set local count to 2  return 0;}

The declaration of count declared in the main() function hides the integer named count declared in global namespace scope. The statement ::count = 1accesses the variable named count declared in global namespace scope.

You can also use the class scope operator to qualify class names or class member names. If a class member name is hidden, you can use it by qualifying it with its class name and the class scope operator.

In the following example, the declaration of the variable X hides the class type X, but you can still use the static class member count by qualifying it with the class typeX and the scope resolution operator.

#include <iostream>using namespace std;class X{public:      static int count;};int X::count = 10;                // define static data memberint main (){      int X = 0;                  // hides class type X      cout << X::count << endl;   // use static member of class X}

Related References

  • Scope of Class Names
  • Namespaces

原创粉丝点击